java 主题爬虫_主题爬虫 - 长颈鹿Giraffe - 博客园
參考了一些論文和網上的資料以及清華大學出版社出版的《自己動手寫網絡爬蟲》這本書中的部分章節,設計了主題爬蟲的主要體系結構如下圖所示:
Heritrix是一個由 java 開發的、開源的網絡爬蟲,我參考網上的一些文章分析了其部分關鍵功能的代碼,然后借鑒其幾個比較好的地方實現了一個通用爬蟲的主要功能。下面是我實現的爬蟲中幾個個人認為比較好的地方。
1)??????? 可配置性:通過.properties配置文件可以配置該爬蟲所使用的線程數、線程等待時間,連接超時時間,可爬取文件類型和下載目錄等。
2)??????? 爬蟲禮儀:解析站點根目錄下的robots.txt文件,遵循爬蟲禁止協議、以及避免對服務器資源的過度使用等。
3)??????? 爬取效率方面:采用可以調節的方式控制線程數量,并且適度加鎖。
4)??????? 內存性能方面:使用Berkeley DB來避免使用內存隊列時大數量導致內存溢出的問題。采用Berkeley DB來管理url,對每一個訪問的url分配一個遞增的docid,簡單的解決了url消重問題。同時用Berkeley DB來管理待爬取和正在爬取的隊列。
主題爬蟲與通用爬蟲最主要的區別在于有頁面主題相關度計算的模塊,這涉及到給定主題的特征關鍵向量(關鍵字和權值)的提取,以及爬取到頁面的內容與主題相關度的計算。
關于主題的特征向量提取,我的想法是對給定的主題,在元搜索引擎中爬取搜索到的前20或更多網頁,然后對其內容進行分詞處理,并通過TF-IDF來計算其中單詞的權值,并取權值最高的前30個詞作為該主題的關鍵詞。我也對此進行了一些實驗,但是發現實驗結果并不太理想,比如我以“軟件工程”為主題,但很多與軟件工程相關的網頁中一些明顯相關的關鍵詞通過TF-IDF計算出來的權值并不高,我分析的原因可能是由于在TF-IDF公式中,如果某個詞在每一篇文檔中都出現的話,那么則認為它的權值較低,而類似于“軟件工程”這樣的詞語一定會在幾乎每篇與軟件工程相關的網頁中出現。
而主題相關度的計算上,我的想法是通過SVM向量模型計算父頁面與主題的相關度,同時結合url錨文本與主題的相關程度,同時決定該url的權值,然后根據url的權值排序,權值高的優先爬取,權值低的url也要加入到隊列中,只是優先級較低,所以這樣也可以簡單地解決主題爬蟲的隧道效應。
目前還只實現了通用爬蟲的功能...to be continue...
總結
以上是生活随笔為你收集整理的java 主题爬虫_主题爬虫 - 长颈鹿Giraffe - 博客园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 九宫重排_[蓝桥杯][历届
- 下一篇: java rpm 安装路径_如何查找rp