你的位置:首页 > 软件开发 > Java > 详解java如何使用HttpClient 和 HtmlParser 实现简易网络爬虫

详解java如何使用HttpClient 和 HtmlParser 实现简易网络爬虫

发布时间:2015-12-11 09:00:38
开发环境的搭建,在工程的 Build Path 中导入下载的Commons-httpClient3.1.Jar,htmllexer.jar 以及 htmlparser.jar 文件。图 1. 开发环境搭建 HttpClient 基本类库使用 HttpClinet 提供 ...

详解java如何使用HttpClient 和 HtmlParser 实现简易网络爬虫

开发环境的搭建,在工程的 Build Path 中导入下载的Commons-httpClient3.1.Jar,htmllexer.jar 以及 htmlparser.jar 文件。清单 1.清单2HtmlParser 提供了强大的类库来处理 Internet 上的网页,可以实现对网页特定内容的提取和修改。下面通过几个例子来介绍 HtmlParser 的一些使用。这些例子其中的代码,有部分用在了后面介绍的简易爬虫中。以下所有的代码和方法都在在类 HtmlParser.Test.java 里,这是笔者编写的一个用来测试 HtmlParser 用法的类。迭代遍历网页所有节点// 循环访问所有节点,输出包含关键字的值节点清单 3 的代码展示了如何迭代所有的网页,更多的工作可以在此基础上展开。比如找到某个特定的网页内部节点,其实就可以在遍历所有的节点基础上来判断,看被迭代的节点是否满足特定的需要。使用 NodeFilter对 Filter 做逻辑操作的 Fitler 有:AndFilter,NotFilter ,OrFilter,XorFilter。判断节点的孩子,兄弟,以及父亲节点情况的 Filter 有:HasChildFilterHasParentFilter,HasSiblingFilter。还有其他的一些 Filter 在这里不一一列举了,可以在 org.htmlparser.filters 下找到。清单 4 展示了如何使用上面提到过的一些 filter 来抽取网页中的 <a> 标签里的 href属性值,<img> 标签里的 src 属性值,以及 <frame> 标签里的 src 的属性值。清单4// 获取一个网页上所有的链接和图片链接清单5

各个类的源码以及说明

对应上面的流程图,简易爬虫由下面几个类组成,各个类职责如下:

Crawler.java:爬虫的主方法入口所在的类,实现爬取的主要流程。

LinkDb.java:用来保存已经访问的 url 和待爬取的 url 的类,提供url出对入队操作。

Queue.java: 实现了一个简单的队列,在 LinkDb.java 中使用了此类。

FileDownloader.java:用来下载 url 所指向的网页。

HtmlParserTool.java: 用来抽取出网页中的链接。

LinkFilter.java:一个接口,实现其 accept() 方法用来对抽取的链接进行过滤。

下面是各个类的源码,代码中的注释有比较详细的说明。

清单6 Crawler.java

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:详解java如何使用HttpClient 和 HtmlParser 实现简易网络爬虫

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。