目前我有一個 Scrapy Spider 在 parse 方法上產生各種項目。有沒有什么辦法可以得到所有已經被 yield 的項,而不管 parse 方法被調用了多少次?
3 回答

皈依舞
TA貢獻1851條經驗 獲得超3個贊
使用管道,您將能夠將所有項目累積到類似結構的數組中(process_item
在您的管道中):
self.items.append(item) # I use self.items class variable defined at your pipeline
并在spider_closed
.

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
通常有兩種方法可以做到這一點。
首先,您可以使用命令將輸出簡單地保存在 JSON 文件中scrapy crawl my_spider -o my_data.json
。其次,您可以編寫一個管道并將輸出存儲在任何數據庫中以形成您想要的結構。

MMMHUHU
TA貢獻1834條經驗 獲得超8個贊
我不確定您所說的獲取物品是什么意思。如果你想將它們導出到一個文件中,你可以使用feed export,通過像這樣執行蜘蛛:
scrapy?crawl?my_spider?-o?my_data.csv
它支持其他擴展,檢查那些鏈接。
從你的標題看來你想要處理產生的項目,在這種情況下你需要一個ItemPipeline。從文檔:
在一個項目被蜘蛛抓取后,它被發送到項目管道,它通過幾個順序執行的組件來處理它。
...
項目管道的典型用途是:
清理 HTML 數據
驗證抓取的數據(檢查項目是否包含某些字段)
檢查重復項(并刪除它們)
將抓取的項目存儲在數據庫中
parse
這兩種方法的運行都與方法被調用的次數無關。
添加回答
舉報
0/150
提交
取消