我寫了一個使用scrapy的蜘蛛,一個使得整個HtmlXPathSelector請求分離網站。它在每個請求(異步)滿足後在.csv文件中創建一行數據。無法看到最後滿足哪個請求,因爲如果尚未提取數據(有時會錯過數據數據),請求會重複。即使我從一個整齊的列表開始,由於在提取數據後立即寫入行,輸出混亂。Python Scrapy函數在spider_closed信號發送之前被調用?
現在我想根據一列對該列表進行排序,但是在每次請求完成後。 '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
我認爲你可以將超過1種功能的信號。這會解決你的問題嗎? –
事實上,你可以將函數鏈接到信號上......我相信我的實際問題是'scrapy'的結構 - 這是通過先創建一個.py文件來運行蜘蛛,然後對它進行排序之後輸出文件。這非常有幫助:http://snipplr.com/view/67012/selfcontained-script-to-crawl-site-updated-scrapy-130dev/ – corg
不應該dispatcher.connect(...)在__init __( )而不是start_requests()? – imwilsonxu