我希望你能幫助我。我試圖抓取包含信息的4500個鏈接的網站。因此,結構是這樣的:爬行大型網站,處理超時
1級(只是不同類別)
第2層(含不同的主題)
第3層(含主題信息)
所以我的腳本打開每一類中環 - 然後按主題打開主題,並從第3層中提取所有信息。但由於存在4500個主題,所以我遇到了問題,有時會出現超時錯誤,此後我必須從頭開始嘗試(有時在200個主題之後,以及其他時間是在2200個話題之後)。我的問題是如何以正確的方式做到這一點,所以如果它崩潰,我可以繼續下一個主題,而不是從一開始就崩潰。我是Ruby和Crawling的新手,希望能聽到每一條建議。
謝謝!
「臨時數據庫」可能是一個實際的關係數據庫,或者您可以使用Ruby的'Hash' /'Array'。 – saki7
臨時數據庫是否存儲在某個地方,或者每次只是一次又一次填充臨時數據庫。例如,如果我做了前兩個步驟,然後讓步驟3失敗了。如果我重新啓動應該是步驟1和2再做一次,或者應該只是步驟3重新啓動。如果是這樣,我必須保存它失敗的地方? – user2448801
這完全取決於你的選擇和設計思想。如果您希望在應用程序重新啓動後從錯誤中回退,則必須將其存儲在永久存儲中;否則你可以將它存儲在內存中。在我看來,我會選擇將它存儲在一個簡單的JSON文件中。 ActiveSupport爲哈希和數組提供'to_json'方法。與應用程序設計相關的進一步問題將過於籠統。你必須在新線索中提出更具體的問題。 – saki7