版本: 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