私はスクラピープロジェクトに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周りから働いていないと示唆していることを確認し
だから、誰がどのように今、これを行うために私に言うことができますか?
に言うよう
from pydispatch import dispatcher
で
from scrapy.xlib.pydispatch import dispatcher
置き換えます'from_crawler'メソッドを使用してScrapyの新しいバージョンでシグナルを接続する方法が示されています。 –
はい、そうですが、バックグラウンドジョブ内から 'CrawlerRunner'を呼び出しています。私が '@ classmethod'の例をそこに置くと、それはscrapyフレームワークによって呼び出されることはありません。 – freeloader