crawl 连接网页超时,HTTP 599
unbuntu , pyspider
抓的是某宝的商品详情页,出现问题,始终连接不上。 上一级,商品的列表页,没有问题,也是使用了js的。
错误提示信息:[E 160630 14:21:42 base_handler:195] HTTP 599: Operation timed out after 120001 milliseconds with 0 bytes receive -- 加了 fetch_type='js'时
[E 160630 14:45:33 base_handler:195] HTTP 599: Failed to connect to item.taobao.com port 443: Connection timed out -- 没有fetch_type='js'时
都算是没连上网站,而用urllib2的urlopen是可以读到网页信息的。
有一条比较可疑的提示,但是我不会解释。。
在其他电商网站有成功过了,逻辑都差不多。但这边就是不行。
因为不懂的点有些多,问题都有点找不到,如果您有思路的话,可否指点一下 :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我也碰到过一样的问题,先抛出解决方法;
解决:
原因
最可能的是网速问题(在公司爬取出现问题,在家里没出现 —— 100M 光纤);
爬取的网页中图片等较多,加载速度偏慢;
pyspider 默认的连接时间为 20, 抓取时间为 120。
配置参数,增大时间限制
根据现象中的
“after 120001 milliseconds with 0 bytes receive”
和我遇到的
“after 120000 milliseconds with 1723300 out of 2343850 bytes received 120.00s”
是一个意思,同一种错误类型
-》意思是:超时了(超过设置的最大超时时间了),但是只下载了总共数据的其中一部分
->重点是后半句,意思是可以下载到数据的,只是直到超时都还没下载完全
-》这种情况的最大可能原因就是:网速太慢
-》所以
解决办法
根本办法:换个更快的网络
比如,我公司是1MB/s的网络,家里是10MB/s的网络,换到家里下载,就不会出现这个问题了。
临时的规避的缓解的办法:增大延迟
timeout
( +增大其他容错参数connect_timeout
,retries
)self.crawl
增大参数:或者
备注