2011-10-14 26 views
13

私はScrapyを使用していくつかのウェブサイトをスクラップしています。後でモデルに新しいフィールドを追加したり、解析関数を変更したりすると、ダウンロードされた生データをオフラインで「再生」して再度スクラップすることができます。保存したデータにScrapyスパイダーを再生する

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

しかし、この機能はScrapyの現在のバージョンでは削除されているようだ:Scrapyが一点にリプレイファイルに生データを保存する機能を持っていたように見えます。これを達成する別の方法がありますか?

+1

あなたはMLでお願いしてみたのクロール再開しようか? P – naeg

+1

私の問題の解決策があれば、それは私のものです - あなたのソースを参考にしてください;) – del

答えて

18

crawl --record=[cache.file] [scraper]を実行すると、replay [scraper]を使用できるようになります。

また、あなたはDOWNLOADER_MIDDLEWARESに含めてHttpCacheMiddleware持つすべての応答をキャッシュすることができます:あなたがこれを行う場合は、スクレーパーを実行するたびに、それは最初のファイルシステムをチェックします

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

+0

私は 'scrap crawl --record = mycache myspider'を実行し、 "crawl:error:no such:--record"というエラーメッセージを受け取りました。私はScrapy 0.12.0.2548を使用しています。 HttpCacheミドルウェアを使用すると、私は異なる応答を返す時間が経つにつれて複数の同一の要求を作成するため、動作しません。 – del

3

再開クロールを実装するために、すべてのHTTPリクエストとレスポンスをキャッシュするhttp://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html?highlight=FilesystemCacheStorage#httpcache-enabled

が言ったようにあなたはHTTPCACHE_ENABLEDを有効にすることができます。

やジョブが一時停止して http://scrapy.readthedocs.org/en/latest/topics/jobs.html

+0

時間がたつにつれて同じ要求をしたい場合、これは動作しません。異なる応答が返されます。たとえば、slashdot.orgのホームページを1時間ごとに削り取る場合はどうすればよいですか?私はキャッシュされたエントリが毎時間上書きされるだけなので、これを再生することはできません。 – del

関連する問題