【问题标题】:Scrapy Shell: twisted.internet.error.ConnectionLost although USER_AGENT is setScrapy Shell:虽然设置了 USER_AGENT,但 twisted.internet.error.ConnectionLost
【发布时间】:2017-02-26 15:20:46
【问题描述】:

当我尝试抓取某个网站(同时使用蜘蛛和 shell)时,我收到以下错误:

twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion.>]

我发现当没有设置用户代理时会发生这种情况。 但是手动设置后,还是出现同样的错误。

你可以在这里看到scrapy shell的全部输出:http://pastebin.com/ZFJZ2UXe

注意事项:

我没有代理,我可以通过scrapy shell访问其他网站而没有问题。我也可以使用 Chrome 访问该网站,所以这不是网络或连接问题。

也许有人可以给我一个提示,我该如何解决这个问题?

【问题讨论】:

  • 那么问题是什么?只需设置user-agent 并继续抓取...远程网站可能被设置为不响应任何没有user-agent 的请求
  • 正如我所说,我在设置用户代理时遇到了同样的错误。我不知道下一步该往哪里看。我将编辑答案,以便更好地理解。 (另外,如果你查看 pastebin 链接,你可以看到,我设置了一个用户代理)
  • 查看我的回答...您必须连同请求一起发送headers

标签: web-scraping scrapy scrapy-spider scrapy-shell


【解决方案1】:

这里是 100% 工作代码。

您需要做的是还必须发送请求标头。

settings.py中也设置ROBOTSTXT_OBEY = False

# -*- coding: utf-8 -*-
import scrapy, logging
from scrapy.http.request import Request

class Test1SpiderSpider(scrapy.Spider):
    name = "test1_spider"

    def start_requests(self):

        headers = {
            "Host": "www.firmenabc.at",
            "Connection": "keep-alive",
            "Cache-Control": "max-age=0",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            "DNT": "1",
            "Accept-Encoding": "gzip, deflate, sdch",
            "Accept-Language":"en-US,en;q=0.8"
        }

        yield Request(url= 'http://www.firmenabc.at/result.aspx?what=&where=Graz', callback=self.parse_detail_page, headers=headers)

    def parse_detail_page(self, response):
        logging.info(response.body)

编辑:

您可以通过检查开发工具中的 URL 来查看要发送的标头

【讨论】:

  • 非常感谢!我不知道标题。只是为了将来的问题:有没有办法找出我必须发送哪些标头信息?
  • @areiterer 查看我编辑的答案,也请为我的答案投票
  • 感谢您的投票,很遗憾我还不能为答案投票,抱歉!
猜你喜欢
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2015-01-14
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多