Java开源爬虫框架crawler4j

 花了两个小时把Java开源爬虫框架crawler4j文档翻译了一下,因为这几天一直在学习Java爬虫方面的知识,今天上课时突然感觉全英文可能会阻碍很多人学习的动力,刚好自己又正在接触这个爬虫框架,所以决定翻译一下。六级540多分的水平,大家见谅 。每句话都有根据自己的理解来翻译。特别是快速开始那一部分的源代码。这里是:

crawler4j

Build Status


Maven Central


Gitter Chat

crawler4j是一个开源的Java抓取Web爬虫,它提供了一个简单的抓取Web的界面。 使用它,你可以在几分钟内设置一个多线程的网络爬虫。

内容列表

下载安装

快速开始

使用工厂

更多实例

配置详情

License

下载安装 使用Maven

要使用最新版本的crawler4j,请在您的pom.xml中使用以下代码片段

<dependency> <groupId>edu.uci.ics</groupId> <artifactId>crawler4j</artifactId> <version>4.3</version> </dependency> 快照

您可以添加以下内容以使用下一个快照发行版

<repositories> <repository> <id>onebeartoe</id> <name>onebeartoe</name> <url>https://repository-onebeartoe.forge.cloudbees.com/snapshot/</url> </repository> </repositories> <dependencies> <dependency> <groupId>edu.uci.ics</groupId> <artifactId>crawler4j</artifactId> <version>4.4-SNAPSHOT</version> </dependency> </dependencies> 如果没有Maven

从4.3版本开始如果你需要一个包含所有依赖的东西的jar包。你需要自己去构建它。克隆repo并且运行

$ mvn package -Pfatjar

你会发现在 target/ 文件夹有一个叫做 crawler4j-X.Y-with-dependencies.jar.

使用Gradle

请在build.gradle文件中包含以下依赖项以使用crawler4j

compile group: \'edu.uci.ics\', name: \'crawler4j\', version: \'4.3\'

此外,在build.gradle中添加以下存储库url,以获得依赖关系[sleepycat](https://mvnrepository.com/artifact/com.sleepycat/je/5.0.84)

maven { url "https://repo.boundlessgeo.com/main/" } 快速开始

您需要创建一个扩展WebCrawler的爬虫类。 该类决定应该抓取哪些URL并处理下载的页面。 以下是一个示例实现:

public class MyCrawler extends WebCrawler { /** * 正则表达式匹配指定的后缀文件 */ private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|gif|jpg" + "|png|mp3|mp4|zip|gz))$"); /** * 这个方法主要是决定哪些url我们需要抓取,返回true表示是我们需要的,返回false表示不是我们需要的Url * 第一个参数referringPage封装了当前爬取的页面信息 第二个参数url封装了当前爬取的页面url信息 * 在这个例子中,我们指定爬虫忽略具有css,js,git,...扩展名的url,只接受以“”开头的url。 * 在这种情况下,我们不需要referringPage参数来做出决定。 */ @Override public boolean shouldVisit(Page referringPage, WebURL url) { String href = url.getURL().toLowerCase();// 得到小写的url return !FILTERS.matcher(href).matches() // 正则匹配,过滤掉我们不需要的后缀文件 && href.startsWith("http://www.ics.uci.edu/");// 只接受以“”开头的url } /** * 当一个页面被提取并准备好被你的程序处理时,这个函数被调用。 */ @Override public void visit(Page page) { String url = page.getWebURL().getURL();// 获取url System.out.println("URL: " + url); if (page.getParseData() instanceof HtmlParseData) {// 判断是否是html数据 HtmlParseData htmlParseData = (HtmlParseData) page.getParseData();//// 强制类型转换,获取html数据对象 String text = htmlParseData.getText();//获取页面纯文本(无html标签) String html = htmlParseData.getHtml();//获取页面Html Set<WebURL> links = htmlParseData.getOutgoingUrls();// 获取页面输出链接 System.out.println("纯文本长度: " + text.length()); System.out.println("html长度: " + html.length()); System.out.println("链接个数 " + links.size()); } } }

从上面的代码可以看出,有两个主要的方法应该被覆盖

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwggpg.html