搜索引擎首先要用爬虫把网页爬下来,我用Heritrix,选择Heritrix的主要原因是因为手头有一本《Heritrix+lucene构建自己的搜索引擎》书,资料多一点困难就少一点吧。
其实这几天一直在想做什么主题的垂直搜索引擎,最后决定做汽车的。毕竟没什么经验,时间也不是很多了,我想第一期计划是完成对车的详细参数的搜索。
我选择的网站是太平洋汽车网。
首先我找到了一个可以吧所有的汽车都可以连接到的页面“http://price.pcauto.com.cn/serial_config.jsp?sid=3178”这个页面的左侧栏有一个把所有品牌和型号都罗列出来的树。保存下此页面,准备提取出此页面中的所有有用url
对页面处理的代码如下:
package tool;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GetUrl {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(
new FileReader("d:\\aa.html"));
String line = "";
while ((line = br.readLine()) != null) {
parse(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void parse(String line) {
Pattern p = Pattern
.compile("http://price.pcauto.com.cn/serial.jsp\\?sid=\\d+");
Matcher m = p.matcher(line);
while (m.find()) {
System.out.println(m.group());
}
}
}
其中用了正在表达式把所有符合
"http://price.pcauto.com.cn/serial.jsp\\?sid=\\d+"的连接提取出来运行结果为:
http://price.pcauto.com.cn/serial.jsp?sid=374
http://price.pcauto.com.cn/serial.jsp?sid=93
http://price.pcauto.com.cn/serial.jsp?sid=3178
http://price.pcauto.com.cn/serial.jsp?sid=1603
http://price.pcauto.com.cn/serial.jsp?sid=2163
http://price.pcauto.com.cn/serial.jsp?sid=3104
......................................................................
一共有866个连接。
下一步是用这866个连接为heritrix的种子进行抓取,在抓取前还是要做前期的一些处理工作
因为heritrix如果不对链接做筛选的话后期工作是无法进行的。
1:heritrix有多个扩展点,这里我扩展FrontierSchedule,它是一个PostProcessor,它的作用是在Extractor 中所分析的
链接加到Frontier中。我写了CarFrontirer这个继承了FrontierSchedule的类对本项目的链接进行扩展:
package userP;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.archive.crawler.datamodel.CandidateURI;
import org.archive.crawler.postprocessor.FrontierScheduler;
public class CarFrontier extends FrontierScheduler {
private static final long serialVersionUID = 1L;
// Pattern p =
// Pattern.compile("http://price.pcauto.com.cn/m\\d+/|robots.txt|dns:*");
Pattern p = Pattern.compile("http://price.pcauto.com.cn/m\\d+/");
public CarFrontier(String name) {
super(name);
}
protected void schedule(CandidateURI caUri) {
String url = caUri.toString();
Matcher m = p.matcher(url);
if (m.matches() || url.indexOf("robots.txt") != -1
|| url.indexOf("dns:") != -1) {
this.getController().getFrontier().schedule(caUri);
} else {
return;
}
}
}
扩展了FrontierSchedule后,要在Processor.options中加入刚才写CarFrontier这个类,并在WEB控制台Model中的post processors中选择CarFrontier
2:启动开始抓取我发现速度很慢,我想事不是处理robot浪费了太多时间,于是我就在Perfetcher中取消了robots.txt 的限制,方法就是找到package org.archive.crawler.prefetch.PreconditionEnforcer.considerRobotsPreconditions(),把其方法全部注释掉,最后rentrun false就可以了。你会发现你抓取的网页中没了robot.txt这个文件。
开始抓取,速度还是相当慢。
线程是1或0,平均速度7,8K
分享到:
相关推荐
Heritrix的扩展性体现在能够通过自定义处理器和模块来适应不同的抓取需求。例如,`MirrorWriterProcessor`的使用就是一种扩展,它改变了默认的存档格式,使得抓取结果以网站镜像的形式存在。开发者可以进一步修改类...
需要注意的是,Heritrix3的种子载入配置文件是可扩展的,用户可以通过继承和扩展已有的模块来增加新的种子载入方式。这种方式不仅能够满足基本的种子载入需求,还能够满足一些复杂的、特殊的需求,如从数据库、API...
Heritrix3是一款高度可扩展的Java爬虫项目,专为大规模Web抓取设计,用于构建数字档案馆和网络存档。它是一个开源工具,由Internet Archive维护,旨在收集、保存并提供对互联网上的网页和其他资源的访问。Heritrix3...
标题中提到的“扩展Heritrix3指定内容提取”意味着本文档...这些知识点涵盖了Heritrix3扩展内容提取的主要方面,对于希望深入了解和应用Heritrix3进行网页数据抓取和信息提取的用户来说,这些知识具有重要的指导意义。
对于高级开发者来说,Heritrix的可扩展性允许自定义处理器、策略和过滤器,以实现定制化的网络抓取需求。例如,你可以创建自己的URI选择策略,以决定哪些网页应该被爬取,或者编写自定义的抓取模块,处理特定的网页...
接下来是Heritrix的配置与运行: 1. 配置Heritrix:修改“heritrix.properties”文件,在“heritrix.cmdline.admin=”后添加管理员账户和密码,如:admin:admin,并设置命令行端口为8080。 2. 扩展URL过滤类:创建...
选择源代码版本的原因在于可能需要对Heritrix进行自定义扩展以满足特定需求。下载完成后,解压缩文件,你会看到两个主要的文件夹:`lib`和`src`。 `lib`文件夹包含了Heritrix运行所需的第三方类库,这些.jar文件...
9. **扩展与定制**:Heritrix是用Java开发的,因此可以利用Java的强大生态系统进行扩展。开发者可以通过编写自定义模块,实现特定的爬取逻辑或数据处理功能。 10. **与其他工具集成**:Heritrix可以与其他数据分析...
在网上找了许多关于Heritrix的资源,但是关于新版本heritrix3的资源很少,最近由于项目需要,认真读了heritrix的源码,扩展了Heritrix3指定链接提取,内容详细,可以在实际中使用。
6. **扩展与插件**:Heritrix支持插件机制,你可以开发自定义的处理器和策略来增强其功能。例如,可以创建新的解析器处理特定类型的文件,或者编写自定义的调度策略以适应特定的爬取需求。 7. **数据存储**:...
Heritrix的设计遵循模块化和可扩展的原则,它将爬虫的功能分解为多个独立的组件,如种子管理器、下载器、解析器等,这些组件可以通过插件系统进行更换或增强。这种设计使得Heritrix能够灵活地处理各种复杂的网页抓取...
总的来说,Heritrix 1.14.2是一个强大的、可定制的网络爬虫,它展示了如何利用编程语言实现大规模的数据抓取,并为开发者提供了深入学习和扩展爬虫功能的机会。尽管现在有更新的版本(如Heritrix 3.x系列)可用,但...
Heritrix 3.1是互联网档案馆开发的一款开源网络爬虫工具,专门用于抓取和保存网页。这款强大的爬虫软件广泛应用于学术研究、数据分析、网站备份等多个领域。了解Heritrix 3.1的默认配置以及类之间的关系对于有效使用...
总的来说,Heritrix是一个强大的工具,它提供了丰富的配置选项和扩展能力,能满足各种复杂的网页抓取需求。无论是研究人员、数据分析师还是开发者,都可以通过掌握Heritrix来高效地获取和处理互联网上的信息。在使用...
2. 设计和开发一个网络爬虫,使用Heritrix等工具抓取与垂直领域相关的网页数据。 3. 存储和预处理抓取到的数据。这通常涉及到文本清洗、去重、格式转换等步骤,确保数据质量。 4. 使用Lucene建立索引系统。这部分...
2. **配置与策略**:Heritrix 3.2 提供了丰富的配置选项,用户可以通过XML文件定义抓取策略,包括种子URL、抓取深度、时间限制、文件类型过滤等。这使得Heritrix 能够按照特定规则进行有针对性的抓取。 3. **多线程...
- **扩展性**:Heritrix设计为插件式系统,开发者可以编写自己的模块来扩展其功能,如添加新的解析器、过滤器或存储适配器。 总结来说,Heritrix 3.1.0 是一款功能强大、可定制的网络爬虫工具,适用于学术研究、...