(很長一段時間用戶& &第一個問題& &緊張的問)是真如何將Scrapy Web爬網程序與Luigi數據管道集成?
我目前正在建設一個將被部署到它具有以下架構的單一AWS EC2實例Python的後端:
| ---- 數據源 ----- | Temp Storage | - 數據處理 --- | ----- DB ---- |
網絡爬蟲數據 ---- *保存到S3 * = \
API數據 ----------------- *保存到S3 * == >Lugi數據管道 - > MongoDB的
如上圖所示,我們獲取數據(即API請求,Scrapy網絡爬蟲,等...),但棘手的/困難的部分是未來不同的方式採用簡單的容錯方式將接收到的數據與Luigi數據管道連接起來。
有沒有辦法將網絡爬蟲的輸出集成到Luigi數據管道中?如果沒有,如何彌合HTTP數據獲取者與Luigi任務之間的差距,最好的方法是什麼?
任何意見,文件或文章將超級讚賞!另外,如果你需要更多的細節,我會盡快讓他們在這裏。
謝謝!
大點,我一定要不惜一切代價遠離投票站的路程。最後一個問題,你能詳細闡述一下JSON水龍頭嗎?當整個爬蟲程序完成時,或者在單個頁面被抓取並需要處理之後,會發生這種情況嗎?不過考慮個人頁面已經被取出後是否開始處理或是否將所有數據合併爲一個文件,等到以後?然而,我的直覺認爲後者是一個更容易出錯的解決方案/可能導致文件損壞。 –
我做每個項目的項目刮(而不是蜘蛛結束)通過利用項目管道中scrapy。最佳的批處理/處理風格完全取決於您的後端。我在編輯後的答案中包含了來自相關管道的大部分process_item()函數以供參考。如果你不想爲每個項目做...你可以使用scrapy幾乎本地導出到json或csv,然後使用CloseSpider信號或類似的東西發送一個tap到服務器。 – RabidCicada
如果你的項目非常簡單,那麼你不必使用管道只使用導出(內置管道像東西)https://doc.scrapy.org/en/latest/topics/exporters.html。然後你可以觸發SpiderClose或其他東西。 – RabidCicada