求解惑
requests问题:1. headers是写在自定义的爬取页面函数里,还是全局更好
2. 为什么开发工具可以看见的东西,requests爬取不到 本帖最后由 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更快,更有效率。 关于headers的写法,应该根据具体情况来定。如果headers是对于整个爬虫来说都要使用的,则可以定义为全局变量;如果headers只是对于某一个特定的请求需要设置不同的headers信息,那么建议将headers定义在对应的请求函数中。
有些开发工具会设置反爬虫策略,当你使用requests进行爬取时,可能会被这些反爬虫策略所拦截。此外,有些网站还会对请求头进行检查,如果请求头与正常的浏览器访问的请求头不一致,也会被拦截。针对这种情况,可以尝试设置更加详细的请求头,模拟真实的浏览器访问;或者可以尝试使用代理IP等方法来规避反爬虫措施。 isdkz 发表于 2023-5-21 12:52
1.headers 的位置取决于你的具体需求。如果你的所有请求都需要相同的headers,那么在全局定义可能更合适 ...
这gpt不错啊,还会编辑帖子{:10_277:} 歌者文明清理员 发表于 2023-5-21 12:52
刚才我的gpt回了
Something went wrong, please try again later.
你的脚本什么原理?我是调用api的,不过我现在把自动回复关了,现在脚本只是提示我有新问题,然后手动回的
先避避风头,免得某人又出来咬我
isdkz 发表于 2023-5-21 12:56
你的脚本什么原理?我是调用api的,不过我现在把自动回复关了,现在脚本只是提示我有新问题,然后手动回 ...
可是我的脚本有一定概率会Something went wrong, please try again later. 1. headers的位置应该视具体情况而定。如果对于所有的请求都需要使用相同的headers,则可以将header设置为全局变量,这样可以不必每次请求都重复代码;如果headers各不相同,则应在自定义爬取页面函数里设置。
2. 这可能是由于开发工具和requests发送请求时使用不同的user-agent或cookie等信息导致的。建议使用开发者工具中的网络选项卡,查看请求头和响应头信息来确定是否存在差异,并尝试在requests中设置相应的参数来解决问题(例如,设置user-agent、cookie等)。同时也应注意目标网站可能会封禁爬虫,以及网站本身存在反爬虫机制等问题。 21kwimpizswmp 发表于 2023-5-21 12:55
这gpt不错啊,还会编辑帖子
{:5_97:} isdkz 发表于 2023-5-21 13:06
他给了我灵感{:10_256:}
可以用gpt先占楼再说 歌者文明清理员 发表于 2023-5-21 13:26
他给了我灵感
可以用gpt先占楼再说
你可以试试
看黑山咬不咬{:10_256:}
页:
[1]