Heritrix资源
网络上的Heritrix中文资源比较少,整理一下:
中文:
l 《开发自己的搜索引擎 Lucene 2.0 + Heritrix》作者邱哲&符滔滔的BLOG
http://lucenebook.spaces.live.com/
l 《开发自己的搜索引擎 Lucene 2.0 + Heriterx》第十章扩展Heritrix试读章节
(可以考虑开发的,比较有用)
http://book.csdn.net/bookfiles/312/10031212848.shtml
l Heritrix笔记
http://wiki.hoodong.com/wiki/jRwNBCFgWA1dYB0NC
l Heritrix crawler vs Nutch crawler
http://www.dbanotes.net/web/heritrix_crawler_vs_nutch_crawler.html
l 天下维客-爬虫程序
http://www.allwiki.com/wiki/Heritrix#Heritrix.E7.9A.84.E5.B1.80.E9.99.90
英文:
l Heritrix主页
l HTMLParser主页
Heritrix绑定主机IP
关键字:Heritrix 127.0.0.1 IP 主机
Heritrix默认绑定的IP是127.0.0.1。
在org.archive.crawler.Heritrix中
… final private static Collection<String> LOCALHOST_ONLY = Collections.unmodifiableList(Arrays.asList(new String[] { "127.0.0.1" })); … private static Collection<String> guiHosts = LOCALHOST_ONLY;
protected static String doCmdLineArgs(final String [] args) throws Exception { … // Now look at options passed. for (int i = 0; i < options.length; i++) { switch(options[i].getId()) { … case 'b': Heritrix.guiHosts = parseHosts(options[i].getValue()); break; … default: assert false: options[i].getId(); } } … } |
首先定义了默认IP:127.0.0.1,然后赋给guiHost主机变量。当指定-b或--bind参数时,才会把指定的IP赋给主机变量。
另外,中间还有一步参数处理,对于--xxxx参数会转为-x的形式统一处理,所以--bind和-b有一样的效果。
Heritrix启动参数
关键字:Heritrix 启动 参数 bind admin properties
Heritrix的启动参数,除了--bind外,都可以在heritrix.properties设置,而不用每次都在命令行中输入。
如常用的--port, --admin等。
heritrix.cmdline.admin = admin:admin heritrix.cmdline.port = 8080 heritrix.cmdline.run = false heritrix.cmdline.nowui = false heritrix.cmdline.order = heritrix.cmdline.jmxserver = false heritrix.cmdline.jmxserver.port = 8081 |
关于Heritrix的Extractor中文乱码
关键字:Heritrix 中文 乱码 GB2312 Extractor
继承从org.archive.crawler.extractor.Extractor的子类,在extract方法中可以从参数CrawlURI中取出要解析的内容。
curi.getHttpRecorder().getReplayCharSequence.toString() |
有中文时,不做处理会输出乱码。可以在取到的HttpRecorder后设置编码:
HttpRecorder hr = curi.getHttpRecorder(); if ( hr == null ) { throw new IOException( "Why is recorder null here?" ); } hr.setCharacterEncoding( "gb2312" ); cs = hr.getReplayCharSequence(); System.out.println( cs.toString() ); |