做一個網絡爬蟲的程式吧,根據客戶的需求,要求把相關的内容爬取到本地
最終選擇的是apache nutch,到目前為止最新的版本是1.3
Nutch是一個開源的網頁抓取工具,主要用于收集網頁資料,然後對其進行分析,建立索引,以提供相應的接口來對其網頁資料進行查詢的一套工具。其底層使用了Hadoop來做分布式計算與存儲,索引使用了Solr分布式索引架構來做,Solr是一個開源的全文索引架構,從Nutch 1.3開始,其內建了這個索引架構
在下面位址中可以下載下傳到最新的Nutch 1.3二進制包和源代碼
<a href="http://mirror.bjtu.edu.cn/apache//nutch/">http://mirror.bjtu.edu.cn/apache//nutch/</a>
3.1 對下載下傳後的壓縮包進行解壓,然後cd $HOME/nutch-1.3/runtime/local
3.2 配置bin/nutch這個檔案的權限,使用chmod +x bin/nutch
3.3 配置JAVA_HOME,使用export JAVA_HOME=$PATH
4.1 配置http.agent.name這個屬性,在conf目錄下
<prename="code"class="html"><property> <name>http.agent.name</name> <value>My Nutch Spider</value> </property> <pre name="code" class="html"><property> <name>http.agent.name</name> <value>My Nutch Spider</value>
在這個目錄中建立一個url檔案,寫上一些url,如
http://www.apache.org http://nutch.apache.org/
bin/nutch crawl urls -dir mydir -depth 3 -topN 5 bin/nutch crawl urls -dir crawl -depth 3 -topN 5
注意,這裡是不帶索引的,如果要對抓取的資料建立索引,運作如下指令
-dir 選項設定抓取結果存放目錄
-depth 選項設定爬取的深度
-threads 選項設定并行爬取的線程數
-topN 選項設定每個深度爬取的最大頁數
最後就可以檢視mydir中的結果了
一個典型的爬蟲主要有如下階段
URL庫初始化然後開始爬取。
爬蟲讀取沒有通路過的URL,來确定它的工作範圍。
擷取URL的内容
解析内容,擷取URL以及所需的資料。
存儲有價值的資料。
規範化新抓取的URL。
過濾掉不需要爬去的URL。
把要抓取的URL更新到URL庫中。
重複步驟2,直到抓取的網頁深度完畢為止。
附加一張中文圖
不知道為什麼在Nutch-1.3中沒了Nutch自帶的搜尋war檔案,而且在Nutch-1.3中,抓取檔案後,生成的目錄隻有crawldb,linkdb,segments
對比這兩個,搜尋同一關鍵字,發現Nutch搜尋的展示結果有重複,而solr沒有重複,還有solr可以在conf/schema.xml配置字段屬 性,nutch好像改了這個配置檔案,也沒起效果,比如,我想讓索引中存儲content和termvector,可是搜尋結果,并沒有存儲
下面安裝并且配置solr
從官方下載下傳
http://www.apache.org/dyn/closer.cgi/lucene/solr/
下載下傳完成後解壓縮
到solr的example目錄下,運作
java -jar start.jar
運作成功如圖
打開浏覽器
http://localhost:8983/solr/
進入solradmin出現如下界面,運作成功
hadoop使用:
<a href="http://www.cnblogs.com/skyme/archive/2011/10/26/2223984.html">hadoop使用(一)</a>
<a href="http://www.cnblogs.com/skyme/archive/2011/10/27/2225202.html">hadoop使用(二)</a>
<a href="http://www.cnblogs.com/skyme/archive/2011/10/28/2226850.html">hadoop使用(三)</a>
<a href="http://www.cnblogs.com/skyme/archive/2012/07/29/2227507.html">hadoop使用(四)</a>
<a href="http://www.cnblogs.com/skyme/archive/2012/06/01/2529855.html">hadoop使用(五)</a>
<a href="http://www.cnblogs.com/skyme/archive/2012/06/04/2534876.html">hadoop使用(六)</a>
hbase實戰:
<a href="http://www.cnblogs.com/skyme/archive/2012/07/25/2608310.html">hbase實戰——(1.1 nosql介紹)</a>