Воспроизведение паука Scrapy на сохраненных данных - PullRequest
13 голосов
/ 14 октября 2011

Я начал использовать Scrapy , чтобы очистить несколько веб-сайтов. Если позже я добавлю новое поле в свою модель или изменим свои функции синтаксического анализа, я бы хотел иметь возможность «воспроизводить» загруженные необработанные данные в автономном режиме, чтобы снова их очистить. Похоже, у Scrapy была возможность хранить необработанные данные в файле воспроизведения в одной точке:

http://dev.scrapy.org/browser/scrapy/trunk/scrapy/command/commands/replay.py?rev=168

Но эта функция, кажется, была удалена в текущей версии Scrapy. Есть ли другой способ добиться этого?

Ответы [ 2 ]

19 голосов
/ 20 октября 2011

Если вы запустите crawl --record=[cache.file] [scraper], вы сможете использовать replay [scraper].

Кроме того, вы можете кэшировать все ответы с помощью HttpCacheMiddleware, включив его в DOWNLOADER_MIDDLEWARES:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.contrib.downloadermiddleware.httpcache.HttpCacheMiddleware': 300,
}

Если вы сделаете это, каждый раз, когда вы запускаете скребок, он сначала проверяет файловую систему.

4 голосов
/ 11 сентября 2012

Вы можете включить HTTPCACHE_ENABLED, как указано http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html?highlight=FilesystemCacheStorage#httpcache-enabled

, чтобы кэшировать все запросы http и отклик для выполнения сканирования возобновления.

ИЛИ попытаться Задания приостановить и возобновить сканирование http://scrapy.readthedocs.org/en/latest/topics/jobs.html

...