сканировать список сайтов один за другим с помощью scrapy

1

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

Теги:
scrapy
web-crawler
screen-scraping

2 ответа

2
Лучший ответ

Вы можете попробовать использовать concurrent_requests = 1, чтобы не перегружать данные

http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-requests

0

Вы можете определить метод start_requests, который выполняет итерацию с помощью запросов к вашим URL-адресам. Это должно избегать накладных расходов при одновременном хранении всех исходных URL-адресов в памяти и является самым простым подходом к решению описанной вами проблемы.

Если по-прежнему много URL-адресов для хранения в памяти во время обхода, вы можете включить поддержку сохранения.

Если вы действительно хотите подавать только несколько URL-адресов, это возможно, зарегистрировавшись для сигнала spider_idle и в вашем обратном вызове функции добавьте следующие несколько URL-адресов и поднимите DontCloseSpider.

  • 0
    Благодарю. Я попробовал start_requests и итератор внутри него, но это не помогло. Из журнала я заметил, что паук все еще сканировал несколько доменов, прежде чем углубился. Я понимаю, что постоянная поддержка предназначена для хранения того, что переполз паук, поэтому в следующий раз, когда паук может начать с него, это может быть не тот случай, который я ищу. Если я не правильно понял, пожалуйста, поправьте меня. Можете ли вы рассказать больше о третьем подходе с сигналом spider_idle? У меня ограниченный опыт в области скрапа.
  • 0
    Я думал, что причиной не использовать start_urls было использование памяти? и в этом случае start_requests означает, что вам не нужно помещать все запросы в память. Поддержка постоянства позволяет избежать удержания невыполненных (еще не выполненных) запросов в памяти. Если вы хотите ограничить параллелизм и контроль порядка сканирования, это также возможно, но я не совсем понимаю, зачем вам это нужно и чего нужно достигать.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню