我在Python中編寫了一個spidering腳本,工作得很好。但是,花費很長時間才能完成(9個小時以上,取決於網站的鏈接數量)。什麼是最好的選擇線程在蜘蛛?
我想實現線程,使它花費更少的時間,但我很難找出哪個部分是最好的線程。乍一看,我會創建線程去獲取每個頁面的頁面內容,然後鎖定visited_urls
和to_visit_urls
陣列,以確保所有內容都可以使用相同的列表。
但似乎它可能花費大多數時間檢查visited_urls
和to_visit_urls
數組中的重複項,那麼以這種方式進行線程實際上可以節省我多少時間?有沒有更好的方法來纏繞我的蜘蛛?
如果你異形你的代碼,並花費上隸屬檢查多少時間,也許你正在使用'list'爲'visited_urls'和'to_visit_urls'具有爲O(n )查找。嘗試使用'set'代替O(1)查找。 – 2014-10-02 15:24:11
我還沒有分析我的代碼,我只有_feeling_。 :D – Staunch 2014-10-03 14:07:02