在尝试此site的抓取响应时,我遇到Scrapy
,Crawlera
和Splash
的问题。
我没有运气就尝试了以下内容:
Scrapy
shell - 超时Scrapy
+ Crawlera
- 超时Splash
实例(小) - 超时但是我可以使用Selenium
的Firefox webdriver抓取网站。但我希望摆脱这种情况,而是使用Splash
。
是否有解决方法来避免这些超时?
如果我使用由aquarium设置的本地Splash
实例加载网站,但与Firefox网络驱动程序相比,它仍需要20秒以上的时间。
答案 0 :(得分:0)
尝试增加Splash的超时时间。如果您使用Docker运行Splash,请将参数--max-timeout
设置为更大的值,例如3600
(有关详细信息,请查看documentation)。
接下来,在您的Splash请求中,也会增加超时。如果您使用scrapy-splash
库,请将SplashRequest
参数timeout
设置为更高的值,例如3600
。像这样:
yield scrapy_splash.SplashRequest(
url, self.parse, endpoint='execute',
args={'lua_source': script, 'timeout': 3600})
答案 1 :(得分:0)
您可以使用scrapy shell重试请求并在标头中设置用户代理。对我来说,使用这种方法就可以在几秒钟内完成工作。使用默认用户代理导致站点删除连接。默认用户代理声明您正在使用scrapy,因此站点会选择断开连接是有道理的。
替换自定义用户代理以匹配您自己的浏览器或首选用户代理和网址。您可以尝试使用以下步骤,然后在浏览器中查看响应:
mySql