今天該進入主題了
十一、Nutch
首先是下載,原來只有一個版本,當時折騰的時候是1.0,現在突然冒出兩個版本,一個1.16,一個2.4,那麼到底有什麼差別呢?先查查資料看看再說。
現在Nutch分爲兩個版本:1.x和2.x,這兩個版本的主要區別在於底層的存儲不同。1.x版本是基於Hadoop架構的,底層存儲使用的是HDFS,而2.x通過使用Apache Gora,使得Nutch可以訪問HBase、Cassandra、MySQL、DataFileAvroStore、AvroStore等等。從這點上來看,就根據個人的需要來確定了,用什麼樣的存儲方式更方便咱就用什麼,現在咱們可以考慮2.X版本的mysql,爲啥,因爲我就認識這一個,嘿嘿,挺不好意思的哈,其他都臉盲。
既然準備使用MySql,就首先要安裝再進行後續的操作。
1、MySql的安裝
習慣先檢查一下有沒有更新,有更新了先更新完再說。
apt update
apt upgrade
檢索一下MySql的包包
apt list | grep mysql
簡單點操作mysql還是要有個workbench比較好一些哈,先上網站下載deb包準備着。
https://dev.mysql.com/downloads/repo/apt/ 直接網站左下角,No thanks,just start my download.就可以下載了。
然後下載workbench
https://dev.mysql.com/downloads/workbench/ 選擇ubuntu19.10版本,同樣左下角點擊下載。
開始安裝mysql 已經是8.0版本了 245M大小
apt install mysql-server mysql-client
默認安裝好之後沒有任何密碼的設置提示,那好吧,先看看到底有沒有密碼
mysql 呀,直接進入了,壓根沒有密碼,抓緊時間設置一個,多少有點安全保障啊
ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password by '你的密碼';
現在把workbench安裝好,用root登錄一下試試,是不是提示了密碼了。登錄OK
2、Nutch 下載2.x版本的tar包
提取所有文件後,複製到usr目錄下備用,然後下載ant並配置環境,爲什麼前面安裝的JDK8,在這裏體現出來了,ant的最新版本是1.10.7,就是對應jdk8的版本。1.9版本對應的是JDK1.5
提取文件,將目錄複製到usr或者opt目錄,看個人習慣,我是放到了opt目錄下
配置環境變量 gedit /etc/profile
添加
#SET ANT ENVIRONMENT
export ANT_HOME=/opt/apache-ant-1.10.7-bin
export PATH=${ANT_HOME/bin}:$PATH #$PATH切記不要忘記了!並且用:英文半角的冒號連接。
保存退出,重啓計算機或者source /etc/profile
測試一下ant -version
有了版本號提示,就表示ant配置成功了。
3、配置Nutch支持mysql
gedit ivy/ivy.xml 文件
在<dependencies>段內,excute段前的dependency 段添加。
<!--配置ivy/ivy.xml-->
<!--ivy也是一種包管理工具,和maven差不多,這裏就是添加sql的依賴-->
<dependency org="mysql" name="mysql-connector-java" rev="5.1.18" conf="*->default"/>
<dependency org="org.apache.gora" name="gora-sql" rev="0.1.1-incubating" conf="*->default" />
<dependency org="org.apache.gora" name="gora-core" rev="0.3" conf="*->default"/>這一行修改爲下面內容。改版本號。
<dependency org="org.apache.gora" name="gora-core" rev="0.2.1" conf="*->default"/>
<!-- Uncomment this to use SQL as Gora backend. It should be noted that the gora-sql 0.1.1-incubating artifact is NOT compatable with gora-core 0.3. Users should downgrade to gora-core 0.2.1 in order to use SQL as a backend. -->
添加mysql的相關配置
同樣是nutch目錄下的conf/gora.properties
默認是沒有sqlstore段,在最後添加如下代碼:
#MySQL properties
gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver
gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch?createDatabaseIfNotExist=true
gora.sqlstore.jdbc.user=root
gora.sqlstore.jdbc.password=你的mysql密碼
還是conf目錄下,有一個nutch-default.xml文件,打開,複製所有內容到 nutch-site.xml,這個文件默認情況下是沒有配置參數數據的。
十二、Nutch-site.xml詳細配置
1、http.agent.name
這個value值默認是空,在編譯使用前必須配置value值
<property>
<name>http.agent.name</name>
<value>Linux Nutch Spider</value>
</property>
在下面的<description></description>中有說明,用於控制‘User Agent’的requests header,也就是請求頭,MUST NOT be empty !說的很清楚了,沒有請求頭的蜘蛛在爬取數據時就可能會出錯,也就是非response 200!,請求不成功或者被拒絕。
還有一個就是下面緊挨着的http.robots.agents的value值,不需要修改,這個會涉及到很多網站根目錄下設置的robots.txt,下面說明的很清晰apart from 'http.agent.name',除了上面的agent.name外的,如果不知道的話,可以留空,默認使用http.agent.name
2、http.agent.version
根據自己需要顯示的版本進行設置,也可以不設置。
3、http.accept.language
這個涉及到了語言的問題,請求頭可以接受的語言,這裏允許使用非英語語言作爲默認檢索的語言。這裏可以在value中添加ja-jp,中文的則需要添加zh-CN,zh
<property>
<name>http.accept.language</name>
<value>ja-jp, en-us,en-gb,en;q=0.7,*;q=0.3</value>
<description>Value of the “Accept-Language” request header field.
This allows selecting non-English language as default one to retrieve.
It is a useful setting for search engines build for certain national group.
</description>
</property>
4、FTP properties控制爬取ftp,其中的用戶名ftp.username和ftp.password,根據自己掌握的內容修改value值
5、<!-- parser properties -->975行左右
這裏需要修改的是parser.character.encoding.default,默認的值是<value>windows-1252</value>,修改爲<value>utf-8</value>,這個主要用於如果無法返回編碼信息的時候默認使用的編碼形式。
<property>
<name>parser.character.encoding.default</name>
<value>utf-8</value>
<description>The character encoding to fall back to when no other information
is available</description>
</property>
6、<!-- storage properties --> 1415行左右
storage.data.store.class
這個控制用於存儲和檢索數據的存儲類,下面有明確的舉例,我們複製第一個---sql類,替換掉value值。
<property>
<name>storage.data.store.class</name>
<value>org.apache.gora.sql.store.SqlStore</value>
<description>The Gora DataStore class for storing and retrieving data.
Currently the following stores are available: ….
</description>
</property>
7、還有一個額外的添加配置
generate.batch.id 只有有什麼特殊的作用,我也不知道,學着做吧。
<property>
<name>generate.batch.id</name>
<value>*</value>
</property>
在</configuration>之前添加
十三、編譯Nutch
小插曲來了,忘記下載sonar-ant-task-2.X了,CSDN倒是多的是,2.1,2.2都有,就是要幣,沒有的就百度一下,可以下載到的哈。
把這個.jar包放到nutch目錄下。java2s的網站下載很不穩定,開始還跑,一會兒網速就掉成0。
將下載的sonar-ant-task-2.1.jar文件拷貝到nutch目錄下,然後修改目錄下的build.xml文件,主要還是涉及ant和sql
找到<!--SONAR targets-->行,在<taskdef></classpath>上面添加一行,內容如下:
<classpath><fileset dir="." includes="sonar*.jar" />
保存文件後,在nutch目錄下,執行ant runtime命令,要關注是否出現錯誤,根據提示進行修改,一般配置正確的話,都會正常執行,直到出現BUILD SUCCESSFUL即完成編譯,不要以爲是死機了哈。別忘了看看ant的配置是否還有效,如果無法打開ant,那就重啓計算機再試一次,讓配置生效在做。
忙其他事情,結果第二天停電,我勒個去,runtime和bin目錄都沒看到,這肯定是失敗了啊,今天重新編譯。
說兩句題外話,本來是想用國產的deepinlinux的,來回的sudo不叫麻煩,想用root直接登錄,結果操作了半天都沒有辦法使用root賬號,在社區找了半天,才發現,deeplinux就是不能使用root賬戶的,那還是算了,用ubuntu吧,關鍵的一個原因是ubuntu下部署nutch的資料也相對多一些,遇到問題還能搜索一下,參考參考。