Повторить паттерн Scrapy по сохраненным данным
Я начал использовать Scrapy, чтобы очистить несколько веб-сайтов. Если позже я добавлю новое поле в свою модель или измените свои функции синтаксического анализа, я бы хотел "повторно воспроизвести" загруженные исходные данные в автономном режиме, чтобы снова очистить его. Похоже, что Scrapy имела возможность хранить необработанные данные в файле воспроизведения в одной точке:
http://dev.scrapy.org/browser/scrapy/trunk/scrapy/command/commands/replay.py?rev=168
Но эта функциональность, похоже, была удалена в текущей версии Scrapy. Есть ли другой способ достичь этого?
Ответы
Ответ 1
Если вы запустите crawl --record=[cache.file] [scraper]
, вы сможете использовать replay [scraper]
.
Кроме того, вы можете кэшировать все ответы с помощью HttpCacheMiddleware
, включив его в DOWNLOADER_MIDDLEWARES
:
DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.httpcache.HttpCacheMiddleware': 300,
}
Если вы это сделаете, каждый раз, когда вы запускаете скребок, он сначала проверяет файловую систему.
Ответ 2
Вы можете включить 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