2017-01-19 1 views
1

scrapyスパイダーから結果が得られなかった場合に、空のファイルを生成しないようにする方法はありますか?使用結果がない場合にScrapyが空のファイルを生成しないようにする

使用例

scrapy crawl lorem -o /path/to/lorem.json 

バージョン:

  • のPython 3.6.0
  • Scrapy 1.3.0
+0

さらに、[Issue 2258](https://github.com/scrapy/scrapy/pull/2258)は多少意味があります。この問題は、空のJSON配列に対処しますが、空のファイルが作成されたことを防ぎません。 –

答えて

0

それを行うための唯一の方法は、カスタムフィードを作成することですFileFeedStorageに基づくストレージクラスは、最初のアイテムが掻き出されたときにファイルの遅延開始を実装します。 - d efault FileFeedStorageはstartでファイルを作成します。その後settings.pyでそれをアクティブ:

FEED_STORAGES = { 
    '': 'path.to.CustomFileFeedStorage', 
    'file': 'path.to.CustomFileFeedStorage', 
} 
+0

私はFileFeedStorageの実装、特にインスピレーションのための '03ab0772491c61cb7f2198b2c019c7eb7672a331'のコミットを見ました。しかし、私はまだ目標ファイルのパスを開くのを怠ることのないように働く解決策を考え出すのに問題があります。あなたは光を放つことができますか?ありがとう。 –

1

それはハッキングのビットだが、それが空の場合は、単にファイルを削除することができます。
これはbashで、単一のコマンドで達成することができます。あなたもそれの別名を設定することができ

scrapy crawl myspider -o test.json && if ! cat test.json; then rm test.json; fi 

+0

この問題を解決していただきありがとうございます。 FileFeedStorageソリューションを動作させることの間に、私はあなたのソリューションをテストし、 '[-s test.json] || rm test.json'を別々のbashコマンドとして実行します。 –

関連する問題