我需要使用Python从Linux终端收集网页信息,这个方法非常有效,但是有些页面(并非全部)在我使用requests.get时会返回无效的URL,因为它们有代理检测器,并且不知道如何响应我的请求(我不是来自Linux终端的浏览器或移动应用程序)。
即使使用“User-Agent”头也无法解决问题,我尝试了几种不同的方法来发送它以模拟成Mozilla浏览器:
或者
我收到了一个错误请求,因为这些服务器试图向我发送适用于桌面或移动浏览器的网页,但它们未能正确识别。我这样发送 User-Agent 是否有问题?我在 Python Notebook 中尝试了我的代码,由于我当前正在从浏览器发送请求,所以它完美地工作。
即使使用“User-Agent”头也无法解决问题,我尝试了几种不同的方法来发送它以模拟成Mozilla浏览器:
user_agent = {'User-Agent': 'Mozilla/5.0'}
或者
user_agent = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; hu-HU; rv:1.7.8) Gecko/20050511 Firefox/1.0.4'}
还有许多其他的组合方式。
在某些服务器上,当我尝试使用这行代码时:
page = requests.get(url, headers=user_agent)
我收到了一个错误请求,因为这些服务器试图向我发送适用于桌面或移动浏览器的网页,但它们未能正确识别。我这样发送 User-Agent 是否有问题?我在 Python Notebook 中尝试了我的代码,由于我当前正在从浏览器发送请求,所以它完美地工作。
requests
请求的头部。提示:尝试添加一些Referer头部(今天我发现印度的一个页面,在缺少Referer的情况下会回复404)。 - Jan Vlcinskyhttp://httpbin.org/get
来让头部信息回显;很可能您需要的不仅仅是一个 User-Agent 头部,requests
库并没有对其进行篡改。也许加上一个 Referrer 头部会更好? - Martijn Pieters