Python Spider ConnectionError:(';连接中止。';,不良状态行(';';,)

Python Spider ConnectionError:(';连接中止。';,不良状态行(';';,),python,web-crawler,scrapy-spider,Python,Web Crawler,Scrapy Spider,我正在用python scrapy执行一个爬行过程。在爬行到下一页的随机迭代次数之后(通常在400-500之间),爬行器失败,引发ConnectionError:('Connection aborted','BadStatusLine(“”),) 我已经尝试过几种解决方案,比如使用带有随机用户代理的标题,以及其他一些帖子中推荐的无引用或代理,但是爬行器一直失败 引发的错误是: 018-06-08 16:05:34 [scrapy.core.scraper] ERROR: Spider error

我正在用python scrapy执行一个爬行过程。在爬行到下一页的随机迭代次数之后(通常在400-500之间),爬行器失败,引发
ConnectionError:('Connection aborted','BadStatusLine(“”),)

我已经尝试过几种解决方案,比如使用带有随机用户代理的标题,以及其他一些帖子中推荐的无引用或代理,但是爬行器一直失败

引发的错误是:

018-06-08 16:05:34 [scrapy.core.scraper] ERROR: Spider error processing <GET https://www... > (referer: None)
Traceback (most recent call last):
...

ConnectionError: ('Connection aborted.', BadStatusLine("''",))
2018-06-08 16:05:34 [scrapy.core.engine] INFO: Closing spider (finished)
018-06-08 16:05:34[scrapy.core.scraper]错误:十字轴错误处理(参考:无)
回溯(最近一次呼叫最后一次):
...
ConnectionError:(“连接已中止”,BadStatusLine(“”,))
2018-06-08 16:05:34[刮屑芯发动机]信息:关闭卡盘(已完成)
迭代代码部分如下所示:

if self.counter <= self.limit:

            ua = UserAgent(cache=False)
            User_agent = ua.random
            headers =  {
            'User-Agent': User_agent,
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, sdch',
            'Accept-Language': 'en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4',
            'Referer':response.request.headers.get('Referrer', None),
            'Content-Type': 'application/x-www-form-urlencoded'
            }

            yield scrapy.Request(next_page, callback=self.parse, dont_filter=True, headers=headers)

如果self.counter
BadStatusLine
是因为主机检测到爬行器是机器人,并故意将其断开连接而引发的。由于您已经指定了
UserAgent
,也许您可以使用像
PhantomJS
这样的无头浏览器来模拟浏览器

还有一个中间件可以做到这一点: