最近想利用爬蟲去獲取較為大量的數(shù)據(jù),但是在爬的過程中遇到了若干問題,所以來和各位大神討教一下,如能解答,感激不盡。
1. 對于網(wǎng)頁鏈接數(shù)量較多的時候,用什么方式去爬能提升效率?
我現(xiàn)在是將所有的子頁鏈接存到一個數(shù)組里面,在對數(shù)組鏈接map操作,然后去獲取每一頁的數(shù)據(jù)。但是我現(xiàn)在所爬到的子頁鏈接有上萬個,爬取這些鏈接需要很長的時間,獲取鏈接之后的請求頁面獲取數(shù)據(jù)也要很久的時間。所以我想知道,有沒有更好的方式能夠提高爬蟲的效率的。
2. 獲取數(shù)據(jù)和存儲數(shù)據(jù)應(yīng)該怎么處理
我在請求子頁面獲取數(shù)據(jù)之后,會將數(shù)據(jù)存儲到mongodb里面,但是事實證明,這種寫法讓我的爬蟲存儲效率低下,而且經(jīng)常出現(xiàn)堆棧溢出的情況。所以我想了解一下大神們獲取到數(shù)據(jù)之后是怎么存儲數(shù)據(jù)的,我聽過讀寫分離,但是不知道這具體是怎樣的一個概念,有大神講解下么~
3. 對于爬到錯誤數(shù)據(jù)的處理
有些時候,所爬到頁面的數(shù)據(jù),是不符合存儲標(biāo)準(zhǔn)的,但是我不知道這部分的數(shù)據(jù)是應(yīng)該放過,還是重新請求頁面重新獲取一次。我現(xiàn)在是如果請求到的數(shù)據(jù)不合格,就會換個ip重新請求頁面,知道數(shù)據(jù)符合為止。但是這樣很有可能造成死循環(huán),所以想知道大神們對這種狀況的處理方式。
4. 用mongo存儲數(shù)據(jù)的問題
從昨晚到今天,總共有將近7w個子鏈接,但是我的mongodb里只多了5k條數(shù)據(jù)。所以我想了解一下,關(guān)于mongodb,有沒有什么可參考數(shù)據(jù)之類的,可以讓我了解一下它的真實性能。順便如果有大神肯分享一些mongo使用技巧和心得的話,那就更感謝了。。。
小菜鳥新入門,如果有犯低級錯誤的地方,歡迎各位大神指正。
沒有辦法,網(wǎng)絡(luò)和帶寬限制
正常使用非內(nèi)存型數(shù)據(jù)庫存放即可,如上面答主所說,瓶頸不會在數(shù)據(jù)庫。因為網(wǎng)絡(luò)和帶寬限制,寫入量極其小。猜測你所說的堆棧溢出問題是因為遍歷全表使用callback導(dǎo)致。對mongodb不熟,建議使用mysql
如你所說,你應(yīng)該分析并創(chuàng)建相應(yīng)的處理規(guī)則。符合規(guī)則的進行重試,比如有些網(wǎng)頁頻繁請求會限制ip等等,這些需要你重新請求,但是要設(shè)定次數(shù),比如重試兩次。。除此之外所有異常,比如404等等,不去理會,繼續(xù)下一個任務(wù)
還是上面的結(jié)果,一個爬蟲遠遠達不到數(shù)據(jù)庫的性能上限。你只需要關(guān)注你寫的程序,有沒有遍歷全表的操作即可。
曾經(jīng)用mysql存了130G的MD5數(shù)據(jù),大概10億條,查詢響應(yīng)還是和普通的查詢差不多。由此可見,只要是正確的查詢姿勢,沒有復(fù)雜的聯(lián)合查詢,一般不會觸及到性能上限
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。