日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nutch爬虫原来是这样操作的!

發布時間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nutch爬虫原来是这样操作的! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、nutch簡介

nutch是大名鼎鼎的Doug Cutting發起的爬蟲項目,nutch孵化了現在大數據處理框架Hadoop。在nutch V 0.8.0 版本之前,Hadoop是nutch的一部分,從nutch V0.8.0開始,HDFS和MapReduce從nutch中剝離出成為Hadoop。v0.8.0之后,nutch就完全構建在Hadoop的基礎之上了。

Nutch是一個開源的網絡爬蟲,在搜索引擎中負責爬取網頁,同時自動維護網頁的URL信息,例如相同網頁去重、網頁定時更新、網頁重定向。nutch采用了MapReduce分布式爬取和解析,具有良好的水平擴展性。
現在版本的Nutch本身并不具有搜索功能(V1.2之后,nutch專注于爬取數據),但是可以自動向搜索服務器提交爬取的網頁。例如,solr,可以通過Nutch自帶的命令,來控制Nutch是否將網頁提交給索引服務器。
Nutch雖然是優秀的分布式爬蟲框架,但是它的所有設計,都是為了搜索引擎服務的。在hadoop上用map-reduce框架開發,并不是很適合做數據抽取的業務。如果你的業務是做數據抽取(精抽取),而不是搜索引擎。不一定要選用Nutch。
nutch現在分為兩個分支。一個是1.x系列,一個是2.x系列。它們的主要區別是2.x引入了Gora作為存儲抽象層,從而支持各種NoSQL數據庫,如HBase,Cassandra等

二、nutch安裝

1.nutch的運行環境
??? JDK1.7及以上
??? 需要使用linux操作系統

2.解壓:

設置環境變量

驗證: nutch

3.目錄結構

bin:兩個文件,一個是nutch,一個是crawl,
??????? crawl是對nutch中的命令進行了封裝,實現了一站式調用。
????????
conf:里面保存了nutch的基本配置信息,nutch-default.xml nutch-site.xml parse-plugins.xml regex-urlfilter.txt
????
? docs:api文檔
? lib:存儲了nutch的依賴jar包
? plugins:存儲了nutch使用的插件jar包

三、nutch 爬蟲

nutch 爬取準備工作

1:在nutch-site.xml中添加http.agent.name的配置。如果不配置,啟動會報錯。

2:創建一個種子地址目錄,urls(在nutch 目錄中就可以),在目錄下面創建一些種子文件,種子文件中保存種子地址。每一個種子地址占一行。http:www.zhaozhiyong.cn

?? 注意:種子地址必須以類似于http的字符開頭

3:(可選):控制爬取的url范圍,只爬取站內,在regex-urlfilter.txt 最后添加 :+^http://([a-z0-9]*\.)*bbs.superwu.cn/[\s\S]*
??

4:nutch爬取數據?? bin/crwal urls crawl 1
??? crawl urls crawl 1
??? urls:表示是種子目錄
??? crawl:表示是爬取文件的存儲位置
??? 1:表示是爬取的層次


5.nucth爬取生成的目錄
??? 在爬取的時候指定的crawl中會有下面幾個目錄
??? crawldb:存儲的是待爬取的url
??????? 查看目錄數據:nutch readdb crawl/crawldb -stats -sort
??? linkdb:存儲的是反鏈信息
??????? 查看目錄數據:nutch readlinkdb crawl/linkdb -dump links?
??? segments:存儲的是網站所有數據信息
??????? 查看目錄數據:nutch readseg -dump crawl/segments/20150906090648 sgedb
????????
??? 一個segment包括以下子目錄:
??????? crawl_generate:包含需要抓取的網址列表
??????? crawl_fetch:包含每個抓取頁面的狀態
??????? content:包含每個抓取頁面的原始內容
??????? parse_text:包含每個抓取頁面的解析文本
??????? parse_data:包含每個頁面的外部鏈接(外鏈)和元數據
??????? crawl_parse:包含網址的外部鏈接地址,用于更新crawldb數據庫


???

6.查看nutch生成的數據
??? nutch中的數據都是sequencefile格式的,除了使用上面的nutch命令查看之外
??????? 還可以使用java代碼讀取這些文件
??????? 參考資料<查看nutch生成的中間文件>
??????? 注意:在使用提供的代碼讀取文件時,需要先使用more命令查看對應文件中存儲的數據類型
??????????? 對應需要修改代碼中27行中的value的類型。

四、在solr中對爬取的數據建立索引

在使用solr的之前做以下步驟:

1):需要把nutch下的schema-solr4.xml拷貝到solr中


??????? 命令:cp /usr/local/nutch/conf/schema-solr4.xml /usr/local/solr-4.10.4/example/solr/collection1/conf

2):刪除solr中的默認配置文件schema.xml,在把剛才拷貝過去的文件該名稱
??????? cd /usr/local/solr-4.10.4/example/solr/collection1/conf
??????? rm schema.xml
??????? mv schema-solr4.xml schema.xml

3):在schema.xml中添加一個字段配置
??????? <field name="location" type="string" stored="true" indexed="true"/>

或者也可以動態指定,
??????? 例子:crawl -i -D "solr.server.url=http://192.168.1.170:8983/solr"?urls crawl 1

?

1.啟動solr

??? cd /usr/local/solr-4.10.4/example
??? java -jar start.jar

2.

命令:crawl -i urls crawl 1

-i:表示會對爬取的數據建立索引,默認會在本機solr中建立索引,
??????? 如果使用其他服務器上的solr,需要修改nutch-default中solr.server.url的值,
??????? 建議在nutch-site.xml中進行覆蓋。

3.檢驗

http://127.0.0.1:8983/solr/? 可以通過query 查看到content的內容

注意:如果把爬取層次改為2層,發先抓取的數據還是很少,那是因為在regex-urlfilter.txt中對url進行了過濾
??????? 把url中包含?=之類的都忽略掉了。
??????? 所以可以把這個配置直接注釋掉,或者修改為其他規則。
??????? 詳細修改,參考:<regex-urlfilter解釋.txt>

五、nutch源碼導入到eclipse

先安裝ant
??? cd /usr/local
??? tar -zxvf apache-ant-1.9.6-bin.tar.gz
??? mv apache-ant-1.9.6 ant
??? export ANT_HOME=/usr/local/nutch
??? export PATH=$ANT_HOME/bin:$PATH
???

nutch的源碼是ant管理的,所以不能直接導入到eclipse,需要轉換可以使用ant eclipse -verbose但是,nutch的依賴是使用ivy管理的,
在執行轉換的過程中會下載依賴的jar包,jar包很多,所以建議使用提供的.ivy.zip文件。
這樣在轉換的時候就需要指定一下ivy jar包的存放位置,使用下面命令
ant eclipse -Divy.default.ivy.user.dir=/usr/local/.ivy -verbose
????????
轉換完成之后就可以導入到eclipse中了,但是導入之后發現源碼報錯,

需要修改java buildpath->order and export ->把apache-nutch-1.10/src/bin 移動到最上面,?? 使用top按鈕。
???

六、nutch源碼編譯

需要先把.ivy.zip包解壓到/usr/local目錄下面

解壓unzip .ivy.zip(在Linux 下)
??? 如果提示沒有unzip命令,則使用yum install -y unzip

下載nutch源碼,解壓,重命名

cd /usr/local
??? tar -zxvf apache-nutch-1.10-src.tar.gz?
??? mv apache-nutch-1.10 nutch_src
??? cd nutch_src
??? ant -Divy.default.ivy.user.dir=/usr/local/.ivy –verbose

注意:在編譯源碼之前,需要修改nutch_src/conf/nutch-site.xml,
??????? 在里面添加http.agent.name屬性
??????? <property>
????????? <name>http.agent.name</name>
????????? <value>my nutch spider</value>
??????? </property>

?

七:nutch運行的兩種方式


??????

在nutch官網下載的nutch的bin壓縮包,只支持在使用本地模式運行nutch
??? 想要使用集群模式的話需要使用編譯后的源碼中的腳本

cd /usr/local/nutch_src/runtime/deploy
??? bin/crawl /urls /crawl 1

注意:在使用這種方式的時候要保證nutch所在的節點上面配置的有HADOOP_HOME
??????? 環境變量,因為nutch在向集群中提交任務的時候會根據這個環境變量對應
??????? 的目錄下面的配置文件找集群的地址。
??????? /urls 表示是hdfs上面的文件,里面必須要有一個種子文件

1:nutch的采集流程
??? inject:表示注入url
??? generagete:生成爬取列表
??? fetch:爬取url
??? parse:解析url
??? updatedb:更新crawldb數據庫
????
??? 一般情況下,inject只會執行一次,generate、fetch、parse、updatedb這四步是一個循環。
????

需要nutch的視頻資料可以掃描下方微信二維碼:

總結

以上是生活随笔為你收集整理的nutch爬虫原来是这样操作的!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。