Python Spider ConnectionError: ('Соединение прервано.', BadStatusLine ("''",)) - PullRequest
0 голосов
/ 08 июня 2018

Я выполняю процесс сканирования с помощью 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)
* 1011Есть идеи, почему это происходит?

Решения могут быть ориентированы на то, чтобы избежать ошибки или, возможно, перезапустить паука после возникновения ошибки и возобновить процесс сканирования.

1 Ответ

0 голосов
/ 08 июня 2018

BadStatusLine повышен, потому что хост обнаруживает паука как бота и намеренно отключает его.Поскольку вы уже указываете UserAgent, возможно, вы можете использовать безголовый браузер, например PhantomJS, для имитации браузера.

Существует также промежуточное программное обеспечение, которое делает это: scrapy-webdriver

...