1. 程式人生 > >Java分散式爬蟲Nutch教程——匯入Nutch工程,執行完整爬取

Java分散式爬蟲Nutch教程——匯入Nutch工程,執行完整爬取

在使用本教程之前,需要滿足條件:

  • 1)有一臺Linux或Linux虛擬機器
  • 2)安裝JDK(推薦1.7)
  • 3)安裝Apache Ant

下載Nutch原始碼:

安裝IDE:

轉換:
Nutch原始碼是用ant進行構建的,需要轉換成eclipse工程才可以匯入IDE正確使用,Intellij和Netbeans都可以支援ecilpse工程。
解壓下載的apache-nutch-1.9-src.zip,得到資料夾apache-nutch-1.9。

在執行轉換之前,我們先修改一下ivy中的一個源,將它改為開源中國的映象,否則轉換的過程會非常緩慢。(ant原始碼中並沒有附帶依賴jar包,ivy負責從網上自動下載jar包)。
修改apache-nutch-1.9資料夾中的ivy/ivysettings.xml:

Nutch教程

找到:

<propertyname="repo.maven.org"value="http://repo1.maven.org/maven2/"override="false"/>

Nutch教程

將value修改為http://maven.oschina.net/content/groups/public/ ,修改後:

<propertyname="repo.maven.org"value="http://maven.oschina.net/content/groups/public/"override="false"/>

Nutch教程

儲存並退出,保證當前目錄為apache-nutch-1.9,執行命令:

ant eclipse -verbose  

然後耐心等待,這個過程ant會根據ivy從中心倉庫下載各種依賴jar包,可能要十幾分鍾。

Nutch教程

-verbose引數加上之後可以看到ant過程的詳細資訊。

10分鐘左右,轉換成功:

Nutch教程

開啟Intellij, File -> Import Project ->選擇apache-nutch-1.9資料夾,確定後選擇Import project from external model(Eclipse)

Nutch教程

一直點選next到結束。成功將專案匯入Intellij:

Nutch教程

原始碼匯入工程後,並不能執行完整的爬取。Nutch將爬取的流程切分成很多階段,每個階段分別封裝在一個類的main函式中。在外面通過Linux Shell呼叫這些main函式,來完整爬取的流程。我們在後續教程中會對流程排程做一個詳細的說明。

下面我們來執行Nutch中最簡單的流程:Inject。我們知道爬蟲在初始階段,是需要人工給出一個或多個url,作為起始點(廣度遍歷樹的樹根)。Inject的作用,就是把使用者寫在檔案裡的種子(一行一個url,是TextInputFormat),插入到爬蟲的URL管理檔案(crawldb,是SequenceFile)中。
從src資料夾中找到org.apache.nutch.crawl.Injector類:

Nutch教程

在閱讀Nutch原始碼的過程中,最重要的就是找到每個類的main函式:

Nutch教程

可以看到,main函式其實是利用ToolRunner,執行了run(String[] args)。這裡ToolRunner.run會從第二個引數(new Injector())這個物件中,找到run(String[] args)這個方法執行。

從run方法中可以看出來,String[] args需要有2個引數,第一個引數表示爬蟲的URL管理資料夾(輸出),第二個引數表示種子資料夾(輸入)。對hadoop中的map reduce程式來說,輸入資料夾是必須存在的,輸出資料夾應該不存在。我們建立一個資料夾 /tmp/urls,來存放種子檔案(作為輸入)。

Nutch教程

在seed.txt中加入一個種子URL

http://www.cnbeta.com/  

指定一個資料夾/tmp/crawldb來作為URL管理資料夾(輸出)
有一種簡單的方法來指定args,直接在main函式下加一行:

Nutch教程

args=newString[]{"/tmp/crawldb","/tmp/urls"};

執行這個類,我們會發現報錯了(下面只給了錯誤的一部分):

Causedby: java.lang.RuntimeException: x point org.apache.nutch.net.URLNormalizernot found.  
    at org.apache.nutch.net.URLNormalizers.<init>(URLNormalizers.java:123)  
    at org.apache.nutch.crawl.Injector$InjectMapper.configure(Injector.java:84)...
            
           

相關推薦

Java分散式爬蟲Nutch教程——匯入Nutch工程執行完整

在使用本教程之前,需要滿足條件: 1)有一臺Linux或Linux虛擬機器 2)安裝JDK(推薦1.7) 3)安裝Apache Ant 下載Nutch原始碼: 安裝IDE: 轉換: Nutch原始碼是用ant進行構建的,需要轉

Nutch教程——匯入Nutch工程執行完整 by 逼格DATA

在使用本教程之前,需要滿足條件: 1)有一臺Linux或Linux虛擬機器 2)安裝JDK(推薦1.7) 3)安裝Apache Ant 下載Nutch原始碼: 安裝IDE: 推薦使用Intellij或者Netbeans,如果用eclipse也可以,不推薦。 轉換:

Python爬蟲入門教程 3-100 美空網資料

簡介 從今天開始,我們嘗試用2篇部落格的內容量,搞定一個網站叫做“美空網”網址為:http://www.moko.cc/, 這個網站我分析了一下,我們要爬取的圖片在 下面這個網址 http://www.moko.cc/post/1302075.html 然後在去分析一下,我需要找到一個圖片列表

搭建簡單JAVA分散式爬蟲系統

先貼一張架構圖  整體架構分三個部分: 排程器        :分配任務 爬蟲            :爬取資料並儲存 監控系統     :檢視爬蟲狀態(主要作用是某個節點down掉了可以今早發現,雖然不影響整體穩定性,但是影響爬蟲效率) 爬蟲部分 爬

Python爬蟲入門教程 10-100 圖蟲網多執行

寫在前面 經歷了一頓噼裡啪啦的操作之後,終於我把部落格寫到了第10篇,後面,慢慢的會涉及到更多的爬蟲模組,有人問scrapy 啥時候開始用,這個我預計要在30篇以後了吧,後面的套路依舊慢節奏的,所以莫著急了,100篇呢,預計4~5個月寫完,常見的反反爬後面也會寫的,還有fuck login類的內容。

Python爬蟲教程:圖蟲網多執行

我們這次也玩點以前沒寫過的,使用python中的queue,也就是佇列 下面是我從別人那順來的一些解釋,基本爬蟲初期也就用到這麼多 Python學習資料或者需要程式碼、視訊加Python學習群:960410445 1. 初始化: classQueue.Queue(maxsize)FIFO

Python爬蟲入門教程 13-100 鬥圖啦表情包多執行

寫在前面 今天在CSDN部落格,發現好多人寫爬蟲都在爬取一個叫做鬥圖啦的網站,裡面很多表情包,然後瞅了瞅,各種實現方式都有,今天我給你實現一個多執行緒版本的。關鍵技術點 aiohttp ,你可以看一下我前面的文章,然後在學習一下。 網站就不分析了,無非就是找到規律,拼接URL,匹配關鍵點,然後爬取。 擼

Python爬蟲入門教程 14-100 All IT eBooks多執行

寫在前面 對一個爬蟲愛好者來說,或多或少都有這麼一點點的收集癖 ~ 發現好的圖片,發現好的書籍,發現各種能存放在電腦上的東西,都喜歡把它批量的爬取下來。 然後放著,是的,就這麼放著.......然後慢慢的遺忘掉..... 爬蟲分析 開啟網址 http://www.allitebooks.c

Python爬蟲教程:多執行電子書

程式碼非常簡單,有咱們前面的教程做鋪墊,很少的程式碼就可以實現完整的功能了,最後把採集到的內容寫到  csv 檔案裡面,(  csv  是啥,你百度一下就知道了) 這段程式碼是  IO密集操作  我們採用  aiohttp  模

Python爬蟲入門教程 10-100 圖蟲網多執行

寫在前面 經歷了一頓噼裡啪啦的操作之後,終於我把部落格寫到了第10篇,後面,慢慢的會涉及到更多的爬蟲模組,有人問 scrapy 啥時候開始用,這個我預計要在30篇以後了吧,後面的套路依舊慢節奏的,所以莫著急了,100篇呢,預計4~5個月寫完,常見的反反爬後面也會寫的,還有fuck login類的

Python爬蟲入門教程 22-100 CSDN學院課程資料抓

1. CSDN學院課程資料-寫在前面 今天又要抓取一個網站了,選擇恐懼症使得我不知道該拿誰下手,找來找去,算了,還是抓取CSDN學院吧,CSDN學院的網站為 https://edu.csdn.net/courses 我看了一下這個網址,課程數量也不是很多,大概有 6000+ 門課程,資料量不大,用單執行緒其

python簡單爬蟲執行京東淘寶資訊教程

1,需要準備的工作,電腦已經安裝好python,如果沒裝,可以執行去https://www.python.org/官網下載,初學者可以安裝輕量級的wingide python開發工具,python安裝成功後配置好環境變數,在dos環境使用pip install 模組 將需要用

Python爬蟲入門教程 29-100 手機APP數據抓 pyspider

.text 數字 http 默認 dex text obi database size 1. 手機APP數據----寫在前面 繼續練習pyspider的使用,最近搜索了一些這個框架的一些使用技巧,發現文檔竟然挺難理解的,不過使用起來暫時沒有障礙,估摸著,要在寫個5篇左右關於

Scrapy爬蟲教程之URL解析與遞迴

前面介紹了Scrapy如何實現一個最簡單的爬蟲,但是這個Demo裡只是對一個頁面進行了抓取。在實際應用中,爬蟲一個重要功能是”發現新頁面”,然後遞迴的讓爬取操作進行下去。 發現新頁面的方法很簡單,我們首先定義一個爬蟲的入口URL地址,比如《Scrapy入門教程》中的

eclipse匯入maven工程右鍵沒有build path和工程不能自動編譯解決方法

eclipse匯入maven工程,右鍵沒有build path解決方法: 由於.project檔案缺少 <natures>         <nature>org.eclipse.jdt.core.javanature</nature>

爬蟲小項目!適合有基礎的!葡萄酒評分!哪個階段和那種酒呢

紀錄片 pid atp 轉換 com 大小 分享圖片 評分 屬於 葡萄酒,可能對於小編來講不算陌生,但是也算陌生!畢竟這種酒還是離不開聚會啥的!葡萄酒的等級也是不一樣的!那種階段的人適合喝那種階段的酒,這個是有講究的!所以今天我們來走進葡萄酒的市場吧! 接下來是爬取的數據是

python爬蟲實踐——零基礎快速入門(二)豆瓣電影

爬蟲又稱為網頁蜘蛛,是一種程式或指令碼。 但重點在於,它能夠按照一定的規則,自動獲取網頁資訊。 爬蟲的基本原理——通用框架 1.挑選種子URL; 2.講這些URL放入帶抓取的URL列隊; 3.取出帶抓取的URL,下載並存儲進已下載網頁庫中。此外,講這些URL放入帶抓取UR

python:爬蟲之Post請求以及動態Ajax資料的(3)

#爬蟲的post方式 作用:對引數進行打包反饋給伺服器 import urllib.request import urllib.parse #對引數打包 url = "http://www.sunck.wang:8085/form" data = { "use

【Python3爬蟲-圖片】多執行中國國家地理全站美圖多圖可以提高你的審美哦

宣告:爬蟲為學習使用,請各位同學務必不要對當放網站或i伺服器造成傷害。務必不要寫死迴圈。 - 思路:古鎮——古鎮列表(迴圈獲取古鎮詳情href)——xx古鎮詳情(獲取所有img的src) - 1.  單分類爬: from bs4 import BeautifulSo

SpringBoot匯入thymeleaf模板執行報錯。

報錯: SpringBoot匯入thymeleaf模板,執行報錯org.xml.sax.SAXParseException: 元素型別 “link” 必須由匹配的結束標記 終止。 1、新建SpringBoot MAVEN專案後 JAR型別的專案 2、新增pom.xml檔案