我运行的是Scrapy 0.24.4,我遇到过很多网站,它们很快就关闭了抓取,通常在5个请求之内。这些网站对每个请求都返回403或503,Scrapy放弃了。我正在运行一个100个代理的池,启用了RotateUserAgentMiddleware。有谁知道一个站点是如何快速识别Scrapy的,即使代理和用户代理发生了变化?Scrapy不会在请求头中添加任何泄露信息的内容,对吗?
RotateUserAgentMiddleware
k4ymrczo1#
有些网站包含了需要运行的javascript代码,而Scrapy并不执行javascript代码,所以网络应用程序很快就知道它是一个机器人。http://scraping.pro/javascript-protected-content-scrape/尝试对返回403的站点使用selenium。如果使用selenium爬行工作正常,您可以假设问题出在javascript中。我认为crunchbase.com使用了这种防止刮擦的保护。
jtw3ybtb2#
看来主要的问题是没有启用cookie。启用cookie后,我现在有更多的成功。谢谢。
68bkxrlz3#
对我来说,cookie已经启用了。修复它的是使用另一个用户代理,一个常见的。将settings.py项目USER_AGENT的www.example.com文件中的替换为:
USER_AGENT
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
uurity8g4#
我只需要将AutoThrottle_ENABLED设置为True,脚本就可以运行了。
AutoThrottle_ENABLED
True
4条答案
按热度按时间k4ymrczo1#
有些网站包含了需要运行的javascript代码,而Scrapy并不执行javascript代码,所以网络应用程序很快就知道它是一个机器人。
http://scraping.pro/javascript-protected-content-scrape/
尝试对返回403的站点使用selenium。如果使用selenium爬行工作正常,您可以假设问题出在javascript中。我认为crunchbase.com使用了这种防止刮擦的保护。
jtw3ybtb2#
看来主要的问题是没有启用cookie。启用cookie后,我现在有更多的成功。谢谢。
68bkxrlz3#
对我来说,cookie已经启用了。修复它的是使用另一个用户代理,一个常见的。
将settings.py项目
USER_AGENT
的www.example.com文件中的替换为:uurity8g4#
我只需要将
AutoThrottle_ENABLED
设置为True
,脚本就可以运行了。