Подтвердить что ты не робот

Повторить паттерн Scrapy по сохраненным данным

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

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

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

4b9b3361

Ответ 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