個別のサイトへの HtmlXPathSelector リクエストを大量に作成する、scrapy を使用してスパイダーを作成しました。各要求が (非同期的に) 満たされると、.csv ファイルにデータの行が作成されます。データがまだ抽出されていない場合は要求が繰り返されるため、どの要求が最後に満たされたかを確認することはできません (データが数回失われる場合があります)。きれいなリストから始めても、データが抽出された直後に行が書き込まれるため、出力がごちゃごちゃしています。
ここで、1 つの列に基づいてそのリストを並べ替えたいと思いますが、すべての要求が完了した後です。「spider_closed」シグナルを使用して実際の関数をトリガーできますか? 以下のように、信号をディスパッチャーに接続してみましたが、この関数は、変数を操作したり、他の関数を呼び出したりするのではなく、出力するだけのようです。
def start_requests(self)
... dispatcher.connect(self.spider_closed, signal=signals.engine_stopped) ....
def spider_closed(spider):
print 'this gets printed alright' # <-only if the next line is omitted...
out = self.AnotherFunction(in) # <-This doesn't seem to run