簡體   English   中英

Python Spider ConnectionError :(“連接已中止。”,BadStatusLine(“''”,))

[英]Python Spider ConnectionError: ('Connection aborted.', BadStatusLine(“''”,))

我正在使用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)

迭代代碼部分如下所示:

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)

知道為什么會這樣嗎?

解決方案的方向可能是避免發生錯誤,或者是在引發錯誤並重新開始爬網過程后以某種方式重新啟動Spider。

BadStatusLine的原因是主機將蜘蛛視為機器人,並有意斷開了它的連接。 由於您已經指定了UserAgent ,也許您可​​以使用無頭瀏覽器(例如PhantomJS來模擬瀏覽器。

還有一個中間件可以做到這一點: scrapy-webdriver

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM