關于爬蟲的若干問題最近想利用爬蟲去獲取較為大量的數據,但是在爬的過程中遇到了若干問題,所以來和各位大神討教一下,如能解答,感激不盡。1. 對于網頁鏈接數量較多的時候,用什么方式去爬能提升效率?我現在是將所有的子頁鏈接存到一個數組里面,在對數組鏈接map操作,然后去獲取每一頁的數據。但是我現在所爬到的子頁鏈接有上萬個,爬取這些鏈接需要很長的時間,獲取鏈接之后的請求頁面獲取數據也要很久的時間。所以我想知道,有沒有更好的方式能夠提高爬蟲的效率的。2. 獲取數據和存儲數據應該怎么處理我在請求子頁面獲取數據之后,會將數據存儲到mongodb里面,但是事實證明,這種寫法讓我的爬蟲存儲效率低下,而且經常出現堆棧溢出的情況。所以我想了解一下大神們獲取到數據之后是怎么存儲數據的,我聽過讀寫分離,但是不知道這具體是怎樣的一個概念,有大神講解下么~3. 對于爬到錯誤數據的處理有些時候,所爬到頁面的數據,是不符合存儲標準的,但是我不知道這部分的數據是應該放過,還是重新請求頁面重新獲取一次。我現在是如果請求到的數據不合格,就會換個ip重新請求頁面,知道數據符合為止。但是這樣很有可能造成死循環,所以想知道大神們對這種狀況的處理方式。4. 用mongo存儲數據的問題從昨晚到今天,總共有將近7w個子鏈接,但是我的mongodb里只多了5k條數據。所以我想了解一下,關于mongodb,有沒有什么可參考數據之類的,可以讓我了解一下它的真實性能。順便如果有大神肯分享一些mongo使用技巧和心得的話,那就更感謝了。。。小菜鳥新入門,如果有犯低級錯誤的地方,歡迎各位大神指正。
2 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
對于網頁鏈接數量較多的時候,用什么方式去爬能提升效率?
沒有辦法,網絡和帶寬限制
獲取數據和存儲數據應該怎么處理
正常使用非內存型數據庫存放即可,如上面答主所說,瓶頸不會在數據庫。因為網絡和帶寬限制,寫入量極其小。猜測你所說的堆棧溢出問題是因為遍歷全表使用callback導致。對mongodb不熟,建議使用mysql
對于爬到錯誤數據的處理
如你所說,你應該分析并創建相應的處理規則。符合規則的進行重試,比如有些網頁頻繁請求會限制ip等等,這些需要你重新請求,但是要設定次數,比如重試兩次。。除此之外所有異常,比如404等等,不去理會,繼續下一個任務
用mongodb存儲數據的問題
還是上面的結果,一個爬蟲遠遠達不到數據庫的性能上限。你只需要關注你寫的程序,有沒有遍歷全表的操作即可。
曾經用mysql存了130G的MD5數據,大概10億條,查詢響應還是和普通的查詢差不多。由此可見,只要是正確的查詢姿勢,沒有復雜的聯合查詢,一般不會觸及到性能上限
添加回答
舉報
0/150
提交
取消