原文作者:刘夏(博客:http://www.beyondc.cn)
可能这就是自己最近研究了heritrix这么久,可以拿得出手的一点点突破。
首先在eclipse里打开heritrix工程,在my.psotprocess包下新建一个class。命名什么都随便。代码就copy现有的FrontierSchedulerFor163Mobile就行了。会有2处错误,都是很简单的,把里面的类名和文件名统一就可以了。
找到如下代码:
Java 代码
- try {
- if (url.indexOf("mobile.163.com/0011/product/0011000B/product") != -1
- 124;124; url.indexOf("mobile.163.com/0011/product/0011000B/mark") != -1
- 124;124; url.endsWith(".gif")
- 124;124; url.endsWith(".jpg")
- 124;124; url.endsWith(".jpeg")
- 124;124; url.indexOf("robots.txt") != -1
- 124;124; url.indexOf("dns:") != -1) {
- if (url.indexOf("#") == -1) {
- getController().getFrontier().schedule(caUri);
- }
- } else {
- return;
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- }
- 注意红
色部分代码的含义。就是在url链接中如果包含#就会返回相应的值,与-1不相等,那么就不会放入时刻表里面,那么就不会爬取。同样,如果把你所不需要的格式替换掉#,那么爬虫不会爬取此类格式了。
例如写成:
if (url.indexOf("jpg") == -1) {
getController().getFrontier().schedule(caUri);
那么在mirror镜像里就不会出现jpg格式的文件的。
不过注意到是,不能排除html格式,因为在job设置的时候不是选了个exctractorHTML吗?呵呵……