2017-06-22 2 views
0

私はスクラピープロジェクトに2つのスパイダーを持っています。彼らはうまく動作し、必要な出力項目を生成します。CrawlerRunnerを介してトリガーされるとスクラップクロールからスクラップされたアイテムを取得します

これらのスパイダーは、Webアプリケーションのバックグラウンドジョブで実行したいと考えています。

すべてがセットアップされています - Redisを使用してバックグラウンドジョブをセットアップしたFlaskアプリ - フロントエンドが結果を待っています - すべて正常です。

私は実行時にスパイダーから結果の項目を取得する方法を考えることができません。

私が来ている最も近いこの質問

Get Scrapy crawler output/results in script file function

への答えのようですが、それはscrapyの古いバージョンを参照するように思われる(私は1.4.0を使用しています)と私が得ます廃止予定の警告

'ScrapyDeprecation警告:scrapy.xlib.pydispatchからのインポートは廃止され、今後のScrapyバージョンではサポートされなくなります。シグナルを接続したいだけの場合は、from_crawlerクラスのメソッドを使用します。そうでない場合は、必要に応じてpydispatchを直接インポートします。参照:「

https://github.com/scrapy/scrapy/issues/1762はgithubの問題は、これはV1.1.0周りから働いていないと示唆していることを確認し

だから、誰がどのように今、これを行うために私に言うことができますか?

+0

に言うよう

from pydispatch import dispatcher

from scrapy.xlib.pydispatch import dispatcher

置き換えます'from_crawler'メソッドを使用してScrapyの新しいバージョンでシグナルを接続する方法が示されています。 –

+0

はい、そうですが、バックグラウンドジョブ内から 'CrawlerRunner'を呼び出しています。私が '@ classmethod'の例をそこに置くと、それはscrapyフレームワークによって呼び出されることはありません。 – freeloader

答えて

1

それはかなり簡単です - 私は夜遅すぎる必要があります。

それが明確に言及GitHubの問題で非推奨の警告

otherwise import pydispatch directly if needed.

関連する問題