|
发表于 2023-5-21 12:52:20
|
显示全部楼层
本楼为最佳答案
本帖最后由 isdkz 于 2023-5-21 12:53 编辑
1. headers 的位置取决于你的具体需求。如果你的所有请求都需要相同的headers,那么在全局定义可能更合适,以避免重复。如果某些请求需要不同的headers,那么在特定的函数内部定义可能更合适。无论在全局还是在函数内定义headers,你都应该确保它们在需要时可用。
示例:
- # 全局定义
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
- }
-
- def get_page(url):
- response = requests.get(url, headers=headers)
- # do something with the response...
-
复制代码
或者:
- # 在函数内定义
- def get_page(url):
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
- }
- response = requests.get(url, headers=headers)
- # do something with the response...
-
复制代码
2. 关于你的第二个问题,这可能是因为网页内容是由JavaScript动态生成的。 requests 库只能获取服务器返回的静态HTML内容,它不能像浏览器那样执行JavaScript来生成动态内容。
开发者工具(如Chrome的开发者工具)能看到的内容包括服务器返回的原始HTML内容和浏览器执行JavaScript后生成的动态内容。当你在开发者工具中查看页面源码时,你看到的可能是动态生成的内容。
如果你想抓取的内容是由JavaScript动态生成的,你可能需要使用一种可以执行JavaScript的工具,比如Selenium、Pyppeteer或者Puppeteer等。或者你也可以尝试分析JavaScript或者XHR请求,看看数据是否可以从其他来源获取。这通常比执行JavaScript更快,更有效率。 |
|