如何绕过Scrapy失败的回复(状态代码416,999,...)

now*_*man 6 python scrapy web-scraping

我正在使用Scrapy编写脚本,但我遇到了失败的HTTP响应问题.具体来说,我正试图从" https://www.crunchbase.com/ "中抓取,但我一直在获取HTTP状态代码416.网站是否可以阻止蜘蛛抓取其内容?

Mar*_*cny 6

发生的事情是网站正在查看您的请求附带的标题,并确定您不是浏览器,因此阻止了您的请求.

但是,如果您决定发送与浏览器相同的标题,那么网站无法区分Scrapy和Firefox/Chrome/IE/Safari.在Chrome中,打开网络工具控制台,您将看到它正在发送的标头.将这些标头复制到您的Scrapy请求中,一切都会正常运行.

您可能希望首先发送与User-Agent浏览器相同的标头.

此处记录了如何使用Scrapy请求发送这些标头.

  • 只是为了添加答案,您可以使用中间件来设置Scrapy所做的每个请求的User-Agent设置.我已经建立了一个简单的中间件,使用'假useragent`分配随机用户代理,参见[scrapy,假的用户代理(https://github.com/alecxe/scrapy-fake-useragent). (2认同)