[原創]Python寫的搜索引擎的網絡爬蟲,大家幫忙看看論文提提意見


論文下載地址:

http://sopai.net/SoPai/attach/bbscon/%C2%DB%CE%C4%B3%F5%B8%E5.pdf?B=235&F=M.1118461099.A&attachpos=298&attachname=/%C2%DB%CE%C4%B3%F5%B8%E5.pdf

10 个解决方案

#1


還有這個是我的blog
http://blog.csdn.net/crab_hn

#2


作為本科論文應該不錯了

大略的看了一下
問題主要有
1:文字需要再潤色一些,笑臉之類的就不應該要了。
2:PageRank的理解有問題,不是頁面之間不同的鏈接,而應該是一個頁面被其他頁面的有效鏈接。另外PageRank和待爬行列表用整個url好像沒關系。
3:如果內存不夠的話,可以放置在某些dbm中,比如berkeley db之類,其查找速度也是相當快的。
4:不知道你測過robot線程數目和帶寬利用率的關系沒有?

由於沒有仔細看,也許我的理解有誤。


#3


1:文字需要再潤色一些,笑臉之類的就不應該要了。

嗯,這個我也覺得,可能主要的問題就是不正式


2:PageRank的理解有問題,不是頁面之間不同的鏈接,而應該是一個頁面被其他頁面的有效鏈接。另外PageRank和待爬行列表用整個url好像沒關系。

這個我的理解好像沒有問題,估計是表達有點不清楚


3:如果內存不夠的話,可以放置在某些dbm中,比如berkeley db之類,其查找速度也是相當快的。

內存不是問題,目前我的內存使用還是足夠的,主要是速度,dbm其實不能滿足url庫的使用,使用url trie的數據庫才是正道,而且還要自己實現內存和硬盤的內容置換,基本上要實現自己的dbm了。

4:不知道你測過robot線程數目和帶寬利用率的關系沒有?

這個沒有具體測試,不過這個這個是一個符合正態分布的曲線,好像和機器性能和帶寬有相關。

#4


你的爬蟲的效率不應該這么低。是不是線程開得比較少?如果只有單線程,速度當然慢,一般開個40個線程沒問題。

我覺得Python和C++在這個問題上不應該差這么多。雖然Python的效率比C++差的不可以道理計,但是在爬蟲程序方面,最大的瓶頸應該是IO,特別是網絡IO。所以建議你增加線程數量,最好做個臨界測試,看看開多少個線程會比較好。

此外url的hash函數沒必要這么復雜吧。Python自帶一個hash函數。hash完之后直接就是int。更何況我覺得沒必要用hash。

我也用Python寫過爬蟲,我的做法是把url放到list里。開一個主控線程和一組爬蟲線程。主控線程負責初始化和啟動爬蟲線程,爬蟲線程負責提取網頁,分析網頁,然后向主控線程報告結果。報告完畢之后,爬蟲線程返回,主控線程根據list里面的情況看是不是再啟動新的爬蟲線程。我是下載資料用的,所以開40個線程已經很多了,不過這個時候看機器的負載還是很輕松的。

#5


to shhgs() 


我開了200多個線程,消耗不是很大。
效率可能就出在我的算法了

你的爬蟲的平均下載速度是多少啊?

我現在的url也是用list

那個hash函數是用來分發用的,不是你認為的那個意思,可能你理解錯了
而且我現在是多機並發,是需要映射到各個機器並用網絡傳過去

負載是沒有問題,主要現在的問題就是速度了

如果你有興趣我可以把我的源碼發給你看看
你給留個郵箱

#6


我一般是下載電子書,所以沒有具體測過效率。但是即便我不用多線程,下載速度也不止3k/s。所以我覺得你這個程序有問題。你說你開了200多個線程,那我就有點奇怪了,即便HTTPConnection的啟動速度再慢,有200多線程,也早抹平了。我覺得你是不是重復下載同一個頁面了?每次你做完url提取之后還要做url過濾,把那些已經下載的頁面過濾出去,只下載那些尚未下載的頁面。看你的論文沒提urlparse,覺得是不是這里的問題。

還是沒搞清楚為什么要有hash函數?為什么要用hash來分發url。url和頁面的大小沒有任何關系,所以節點的負載和它所處理的url的數量也沒有關系。按照我的看法,你可以建一個url的pool,按照先到先得的原則分配url。這豈不是要比你用hash分配url更簡單?

#7


輕輕的頂一下。

#8


呵呵,我用了urlparser了

這個url分配的問題
你去找找我的關於igloo的參考文獻就理解了

這個“我覺得你是不是重復下載同一個頁面了?”是很有可能的

我還是需要看看這個了

#9


python\tools\webcheck就是一個爬蟲

#10


為下載Twisted的文檔寫了一個爬蟲。沒做任何優化,用HTMLParser,urllib,大概2兆多東西,40個線程,30秒不到。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com