天天看点

Nutch2 之 InjectorJob

版本: Nutch2.2.1

类:InjectorJob

源码:src/java/org/apache/nutch/crawl/InjectorJob.java

这个类从文本文件(seeds_file)中读取URLs,执行若干初始化操作后,插入到WebPage数据库。

一、解析种子文件

    seeds_file中每个url占一行,

    而且可以选择设定一些metadata:

     - nutch.score : 指定网页权重,对应webpage中的score字段,默认值是1

     - nutch.fetchInterval : 指定抓取间隔,对应webpage中的fetchInterval字段,默认值是2592000

     - [自定义KEY] : 存储于webpage中的metadata字段 

    metadata间分隔符为'\t',key与value之间分融符为'='

    例:

    http://www.sina.com.cn/ \t nutch.score=10 \t nutch.fetchInterval=2592000 \t type=news

二、过滤

    格式化URl,并按规则过滤

url = urlNormalizers.normalize(url, URLNormalizers.SCOPE_INJECT);
    url = filters.filter(url); // filter the url
           

三、生成webpage

       

WebPage row = new WebPage();
    row.setFetchTime(curTime);
    row.setFetchInterval(customInterval);
    //...
    row.putToMetadata(new Utf8(keymd), ByteBuffer.wrap(valuemd.getBytes()));
    //...
    row.setScore(scoreInjected);
    //...
    row.putToMarkers(DbUpdaterJob.DISTANCE, new Utf8(String.valueOf(0)));
    //...
           

四、存储webpage

    执行存储动作的类,在nutch-site.xml中配置,以mysql为例:

<property>
            <name>storage.data.store.class</name>
            <value>org.apache.gora.sql.store.SqlStore</value>
            <description>*</description>
    </property>
           

    类SqlStore在gora的sql扩展包里面,源码可以在这儿下载:http://search.maven.org/remotecontent?filepath=org/apache/gora/gora-sql/0.1.1-incubating/gora-sql-0.1.1-incubating-sources.jar  

    WebPage对象与mysql表字段的对应关系在gora-sql-mapping.xml中指定

参考:

    WebPage的字段解释:http://blog.csdn.net/itufo/article/details/20535539

    WebPage的入库过程:http://blog.csdn.net/itufo/article/details/20727597