Почему режущий робот останавливается?

55
5

Я написал сканер с использованием scrapy framework для анализа сайта продуктов. Гусеница останавливается между внезапно, не завершая полный процесс синтаксического анализа. Я много исследовал об этом, и большинство ответов указывают на то, что мой искатель блокируется веб-сайтом. Есть ли какой-либо механизм, с помощью которого я могу определить, останавливается ли мой паук на веб-сайте или он останавливается сам по себе?

Ниже приведена запись в журнале уровня информации паука.

2013-09-23 09:59:07+0000 [scrapy] INFO: Scrapy 0.18.0 started (bot: crawler)  
2013-09-23 09:59:08+0000 [spider] INFO: Spider opened
2013-09-23 09:59:08+0000 [spider] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2013-09-23 10:00:08+0000 [spider] INFO: Crawled 10 pages (at 10 pages/min), scraped 7 items (at 7 items/min)
2013-09-23 10:01:08+0000 [spider] INFO: Crawled 22 pages (at 12 pages/min), scraped 19 items (at 12 items/min)
2013-09-23 10:02:08+0000 [spider] INFO: Crawled 31 pages (at 9 pages/min), scraped 28 items (at 9 items/min)
2013-09-23 10:03:08+0000 [spider] INFO: Crawled 40 pages (at 9 pages/min), scraped 37 items (at 9 items/min)
2013-09-23 10:04:08+0000 [spider] INFO: Crawled 49 pages (at 9 pages/min), scraped 46 items (at 9 items/min)
2013-09-23 10:05:08+0000 [spider] INFO: Crawled 59 pages (at 10 pages/min), scraped 56 items (at 10 items/min)

Ниже приведена последняя часть записи уровня отладки в файле журнала до закрытия паука:

2013-09-25 11:33:24+0000 [spider] DEBUG: Crawled (200) <GET http://url.html> (referer: http://site_name)
2013-09-25 11:33:24+0000 [spider] DEBUG: Scraped from <200 http://url.html>

//scrapped data in json form

2013-09-25 11:33:25+0000 [spider] INFO: Closing spider (finished)
2013-09-25 11:33:25+0000 [spider] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 36754,
'downloader/request_count': 103,
'downloader/request_method_count/GET': 103,
'downloader/response_bytes': 390792,
'downloader/response_count': 103,
'downloader/response_status_count/200': 102,
'downloader/response_status_count/302': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2013, 9, 25, 11, 33, 25, 1359),
'item_scraped_count': 99,
'log_count/DEBUG': 310,
'log_count/INFO': 14,
'request_depth_max': 1,
'response_received_count': 102,
'scheduler/dequeued': 100,
'scheduler/dequeued/disk': 100,
'scheduler/enqueued': 100,
'scheduler/enqueued/disk': 100,
'start_time': datetime.datetime(2013, 9, 25, 11, 23, 3, 869392)}
2013-09-25 11:33:25+0000 [spider] INFO: Spider closed (finished)

Все еще остаются страницы, которые нужно проанализировать, но паук останавливается.

спросил(а) 2013-09-24T20:00:00+04:00 6 лет, 2 месяца назад
1
Решение
45

До сих пор я знаю, что для паука:

Есть некоторая очередь или пул URL-адресов, которые нужно очистить/проанализировать с помощью методов синтаксического анализа. Вы можете указать, привязать URL-адрес к определенному методу или позволить выполнять "разбор" по умолчанию. Из методов парсинга вы должны вернуть/дать другой запрос (ы), чтобы подать этот пул или элемент (ы) Когда пул заканчивается из URL-адресов или посылается сигнал остановки, паук прекращает сканирование.

Было бы неплохо, если вы поделитесь своим паук-кодом, чтобы мы могли проверить правильность этих привязок. Легко пропустить некоторые привязки по ошибке, например, используя SgmlLinkExtractor.

ответил(а) 2013-09-26T02:03:00+04:00 6 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема