nutch 抓取动态网页设置


nutch过滤规则crawl-urlfilter.txt vs regex-urlfilter.txt

需要注意在conf下面的2个文件:regex-urlfilter.txt,crawl-urlfilter.txt
     # skip URLs containing certain characters as probable queries, etc.
     -[?*!@=] (-改+)
     这段意思是跳过在连接中存在? * ! @ = 的页面,因为默认是跳过所以,在动态页中存在?一般按照默认的是不能抓取到的。可以在上面2个文件中都修改成:
     # skip URLs containing certain characters as probable queries, etc.
     # -[?*!@=]
     另外增加允许的一行
     # accept URLs containing certain characters as probable queries, etc.
     +[?=&]
    意思是抓取时候允许抓取连接中带 ? = & 这三个符号的连接
     注意:两个文件都需要修改,因为NUTCH加载规则的顺序是crawl-urlfilter.txt-> regex-urlfilter.txt


首先有一种说法是:crawl-urlfilter.txt 是供intranet(局域网) 抓取用的,

regex-urlfilter.txt 是供internet(互联网) 抓取用的

因为两者抓取的重点不同,从而导致过滤规则不同。如果你只是想知道两者的简单区别的话,那么看到这里也就可以了,但是如果你想知道更多细节那么下面的内容还是值得一看的

crawl-urlfilter.txtregex-urlfilter.txt 都是用来保存过滤url 的正则表达式的。类 RegexURLFilter(org.apache.nutch.net.RegexURLFilter) 通过 NutchConf.get().get(“urlfilter.regex.file”) 来从中(当然如果你装载了其他配置文件的话,也可能有其他的候选者)进行选择。

regex-urlfilter.txt 是 urlfilter.regex.file 属性的缺省值(1) , 定义在 $NUTCH_JAVA_HOME/conf/nutch-default.xml(如果你设置了环境变量NUTCH_CONF_DIR 的话,那就是 $NUTCH_CONF_DIR/nutch-default.xml)中。该值可以被后续加载的配置文件所覆盖,例如如果你装载了类 CrawlTool(org.apache.nutch.tool.CrawlTool),那么缺省值就会被 crawl-tool.xml 中的urlfilter.regex.file 属性覆盖(2) 。也就是说,如果你在操作过程中调用了类CrawlTool,那么类RegexURLFilter 将会采用crawl-tool.xml 中指定的文件,否则就用缺省的文件。

当然如果nutch-site.xml 中也定义了urlfilter.regex.file 属性的话,那么 NutchConf.get().get(“urlfilter.regex.file”) 返回的值就以nutch-site.xml 所指定的值为准。(关于nutch 的resource chain)

注:(1)NutchConf 初始化时会装载nutch-default.xml 和nutch-site.xml

 public class NutchConf { ......    public NutchConf() {      resourceNames.add("nutch-default.xml");      resourceNames.add("nutch-site.xml");    } ...... } 

(2)装载类CrawlTool 时,crawl-tool.xml 会被插入到resource chain 中

 public class CrawlTool { ......    static {      NutchConf.get().addConfResource("crawl-tool.xml");    } ...... }

你可能感兴趣的:(apache,xml,.net,正则表达式,互联网)