一、引言:
最近在忙某個(gè)商業(yè)銀行的項(xiàng)目,需要引入外部互聯(lián)網(wǎng)數(shù)據(jù)作為參考,作為技術(shù)選型階段的工作,之前已經(jīng)確定了中文分詞工具,下一個(gè)話題就是網(wǎng)絡(luò)爬蟲(chóng)的選擇,目標(biāo)很明確,需要下載一些財(cái)經(jīng)網(wǎng)站的新聞信息,然后進(jìn)行文本計(jì)算。記得上一次碰爬蟲(chóng)還是5年前,時(shí)過(guò)境遷,不知道爬蟲(chóng)的世界里是否有了新的崛起。比較過(guò)一些之后,初步認(rèn)定Heritrix基本能夠滿足需要,當(dāng)然肯定是需要定制的了。
二、版本選擇
Heritrix當(dāng)前版本3.1.0,安裝后發(fā)現(xiàn),啟動(dòng)任務(wù)時(shí),Windows平臺(tái)有BDBOpen的錯(cuò)誤(具體原因不詳),Linux環(huán)境沒(méi)有測(cè)試。度娘了一把,沒(méi)啥實(shí)質(zhì)性收獲,如果從源碼去看,又太費(fèi)時(shí)間。就換到了3.0.5,這個(gè)版本也有問(wèn)題,就是創(chuàng)建Job時(shí),總是提示文件夾有問(wèn)題,可以選擇手動(dòng)創(chuàng)建下載任務(wù)。操作界面如下圖所示:


三、配置任務(wù)-手動(dòng)
1.jobs目錄下新建文件夾sohu;
2.拷貝模板文件profile-crawler-beans.cxml到sohu目錄
3.重命名profile-crawler-beans.cxml文件為crawler-beans.cxml
4.手動(dòng)修改文件crawler-beans.cxml,設(shè)置目標(biāo)網(wǎng)站和存儲(chǔ)方式:
# This Properties map is specified in the Java 'property list' text format
# <a href="http://java.sun.com/javase/6/docs/api/java/util/Properties.html#load%28java.io.Reader%29">http://java.sun.com/javase/6/docs/api/java/util/Properties.html#load%28java.io.Reader%29</a></p> <p>metadata.operatorContactUrl=http://localhost
metadata.jobName=sohu
metadata.description=sohujingxuan</p> <p>##..more?..##
</value>
</property>
</bean></p> <p> <!-- overrides from declared <prop> elements, more easily allowing
multiline values or even declared beans -->
<bean id="longerOverrides" class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="properties">
<props>
<prop key="seeds.textSource.value"></p> <p># URLS HERE
<a href="http://t.sohu.com/jingxuan">http://t.sohu.com/jingxuan</a></p> <p> </prop>
</props>
</property>
</bean></p> <p> <!-- CRAWL METADATA: including identification of crawler/operator -->
<bean id="metadata" class="org.archive.modules.CrawlMetadata" autowire="byName">
<property name="operatorContactUrl" value="<a href="http://localhost"/">http://localhost"/</a>>
<property name="jobName" value="sohu"/>
<property name="description" value="sohujingxuan"/>
<!-- <property name="operator" value=""/> -->
<!-- <property name="operatorFrom" value=""/> -->
<!-- <property name="organization" value=""/> -->
<!-- <property name="audience" value=""/> -->
<!-- <property name="userAgentTemplate"
value="Mozilla/5.0 (compatible; <a href="mailto:heritrix/@VERSION">heritrix/@VERSION</a>@ <a href="mailto:+@OPERATOR_CONTACT_URL@)"/">+@OPERATOR_CONTACT_URL@)"/</a>> -->
</bean>
四、停用Robots檢查
改造函數(shù),禁用Robots協(xié)議檢查,目的就不說(shuō)了,改造方法如下:
private boolean considerRobotsPreconditions(CrawlURI curi) {
// treat /robots.txt fetches specially
//++zhangzl:取消robots.txt的強(qiáng)制限制
return false;
//--</p> <p> }
五、后續(xù)工作
1.定向下載改造:只下載目標(biāo)內(nèi)容,過(guò)濾無(wú)關(guān)信息。
2.自動(dòng)解析改造:下載內(nèi)容自動(dòng)解析到指定目錄,指定格式。