crawl 连接网页超时,HTTP 599

发布于 2022-09-03 14:21:11 字数 584 浏览 12 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

送你一个梦 2022-09-10 14:21:11

我也碰到过一样的问题,先抛出解决方法;

解决:

        self.crawl('xxxxx',
                   callback=self.list_page,
                   fetch_type = 'js',
                   connect_timeout = 50,
                   timeout = 200
                   )

原因

  1. 最可能的是网速问题(在公司爬取出现问题,在家里没出现 —— 100M 光纤);

  2. 爬取的网页中图片等较多,加载速度偏慢;

  3. pyspider 默认的连接时间为 20, 抓取时间为 120。
    配置参数,增大时间限制

旧城烟雨 2022-09-10 14:21:11

根据现象中的
“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增大参数:
self.crawl(urlToDownload,
    callback=self.downloadFileCallback,
    connect_timeout=100,
    timeout=600,
    retries=15,
    save=fileInfo)

或者

  • 增大全局参数:
class Handler(BaseHandler):
    crawl_config = {
        "connect_timeout": 100,
        "timeout": 600,
        "retries": 15,
    }

备注

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文