【问题标题】:Scrapy, Splash and Connection was refused by other side: 10061Scrapy、Splash 和 Connection 被对方拒绝:10061
【发布时间】:2019-07-31 15:29:28
【问题描述】:

我在 Javascript 驱动的网站上使用带有 splash 的 scrapy。但是,我无法通过 Connection was refused by other side: 10061 错误。

我得到这样的日志:

[scrapy.downloadermiddlewares.retry] DEBUG: Retrying 
 <GET https://www2.deloitte.com/ch/en/misc/search.html#country=All#qr=accounting     
 via http://localhost:8050/render.html> (failed 1 times): Connection 
 was refused by other side: 10061: No connection could be made because 
 the target machine actively refused it..

还有一个指向twisted的回溯:

twisted.internet.error.ConnectionRefusedError: Connection was refused 
by other side: 10061: No connection could be made because the target 
machine actively refused it..

我检查了设置中的所有条目,并尝试了各种 USER_AGENTSROBOT 条目,但没有运气。也试过用--disable-private-mode启动splash,但是没有效果。

奇怪的是,只需将相同的 url 复制粘贴到浏览器中就可以完美地工作。

我使用普通的命令行scrapy,以及通过API。有趣的是,在使用 API 时,当然,在 PyCharm 中单击错误消息中目标的 url,标签 # 会被其转义码替换。所以我很困惑这是另一个问题还是两者是否相关。

甚至尝试查看通过 Wireshark 和 Fiddler 发送的包,但无法很好地理解结果,因为我以前从未使用过这些工具。

任何建议将不胜感激。

【问题讨论】:

  • 虽然我完全按照 Splash 的安装说明进行操作,但我对 docker 的安装持怀疑态度。我对 docker 不是很熟悉(我使用的是基于 VM 的工具箱版本),但是我在 docker 中运行了一些其他测试图像(友好的你好),效果很好。此处是否有任何用于 Splash 的 docker / VM 配置,我错过了?

标签: python docker scrapy twisted scrapy-splash


【解决方案1】:

终于找到了罪魁祸首。这确实是与 docker 容器的连接。

首先,我必须使用检索 docker 容器 IP

docker-machine ip

在码头工人终端。接下来,我必须在 scrapy settings.py 文件中调整 SPLASH_URL 以指向 docker-machine ip 而不是 localhost:8050,瞧……它可以工作了。

不幸的是,到目前为止我所看到的消息来源对此都不太清楚,所以我希望这对其他第一次出现的可怜的灵魂有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多