论坛首页 Java企业应用论坛

DOM4HTML(W3C标准实现)源代码

浏览 6213 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-26   最后修改:2010-03-02
最近在写一个爬虫程序,需要分析HTML,网上开源的HTML分析库也不少,为了挑战一下,自己写了一个。

测试代码——提取网页中的<a...></a>标签的href路径,拿google做试验。

运行环境:JDK1.6以上

package org.zergle.w3c.html.lex;

import java.io.IOException;
import java.net.URL;

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.html.HTMLReader;

public class TestHTMLReader {

	@Test
	public void testReadDocument() {
		try {
			HTMLReader reader = new HTMLReader(new URL("http://g.cn"));
			Document doc = reader.readDocument();
			NodeList links = doc.getElementsByTagName("A");
			for (int i = 0; i < links.getLength(); i++) {
				Node node = links.item(i);
				if (node.hasAttributes()) {
					NamedNodeMap attrs = node.getAttributes();
					Node attr = attrs.getNamedItem("href");
					if (attr != null) {
						System.out.println(attr.getNodeValue());
					}
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}



打印结果如下:

http://images.google.cn/imghp?hl=zh-CN&tab=wi
http://video.google.cn/?hl=zh-CN&tab=wv
http://ditu.google.cn/maps?hl=zh-CN&tab=wl
http://news.google.cn/nwshp?hl=zh-CN&tab=wn
http://www.google.cn/music?hl=zh-CN&tab=wU
http://wenda.tianya.cn/wenda/?hl=zh-CN&tab=wH
http://laiba.tianya.cn/laiba/Top?hl=zh-CN&tab=wG
http://www.google.cn/intl/zh-CN/options/
/url?sa=p&pref=ig&pval=3&q=http://www.google.cn/ig/china%3Fsource%3Diglk%26hl%3Dzh-CN&usg=AFQjCNE-fPlHBZ4IREs-KKjdCDT7u-BkSw
/preferences?hl=zh-CN
http://www.google.cn/search?hl=zh-CN&source=hp&q=&#37;E6&#37;B8&#37;A9&#37;E5&#37;93&#37;A5&#37;E5&#37;8D&#37;8E2010&#37;E5&#37;B9&#37;B4&btnG=Google+&#37;E6&#37;90&#37;9C&#37;E7&#37;B4&#37;A2&aq=f&oq=
/advanced_search?hl=zh-CN
/language_tools?hl=zh-CN
/aclk?sa=L&ai=COHUX_MSHS5GGJIe67APZ1YGdDpvhip8Bm4Dy4w_B2ZzZExABIMFUUKzQj4ACYJ0BqgRyT9AXyubQppSOik1N2jZLTzgNFf3oSk8zeN1r_qfnCXmWa95EK5nQAF8KhR8_PxBB7L2gUqR7D10BXJmEPwgB8cBEKsMWJvi_SmOCdtdATchCbNwyBAsjlJq93Brvc55n5_CuvjrNk2N2w3J2fz0Z1Vra&num=1&sig=AGiWqtz_TF-ZN5OkAn_lszxgyfq_UXUFew&q=http://www.google.com/intl/zh-CN/landing/games10/index.html%23utm_campaign%3Dzh-CN%26utm_medium%3Dhpp%26utm_source%3Dhpp-na-us-gns-svn
/intl/zh-CN/ads/
/intl/zh-CN/about.html
http://www.google.com/ncr
/intl/zh-CN/privacy.html
http://www.miibeian.gov.cn/


由于刚刚完成,没有经过严格测试,如果哪位朋友发现BUG的,请与我联系。
   发表时间:2010-02-27  
感觉名字应该叫html-dom4j
0 请登录后投票
   发表时间:2010-02-27  
Zahir 写道
感觉名字应该叫html-dom4j


呵呵,html-dom4j这个名称也不错。
0 请登录后投票
   发表时间:2010-03-01  
lz试过NekoHtmlParser么?
1 请登录后投票
   发表时间:2010-03-01  
我用正则做过
1 请登录后投票
   发表时间:2010-03-02  
shadowlin 写道
lz试过NekoHtmlParser么?


NekoHtmlParser没看过,不过研究过HtmlParser这个开源HTML解析库,它不是用的编译原理的思想来做的,它没有词法分析的过程。不过要想做得好,还是得集百家之长,取人之长补己之短。
0 请登录后投票
   发表时间:2010-03-02  
andsofish 写道
我用正则做过


刚开始写的爬虫,我是用正则做的,也不是说正则不好,正则多了,改起来,自己都看晕了,好长一大串,我写这个完成是为了爬虫的高度可定制性而出发的,我个人觉得用正则还是有点局限性。
0 请登录后投票
   发表时间:2010-03-02  
最新的dom4html我已经放到Google的SVN服务器上去了

在这里下载:svn checkout http://dom4html.googlecode.com/svn/trunk/ dom4html-read-only

0 请登录后投票
   发表时间:2010-03-02   最后修改:2010-03-02
johnson.lee 写道
最近在写一个爬虫程序,需要分析HTML,网上开源的HTML分析库也不少,为了挑战一下,自己写了一个。


试试Tika。
1 请登录后投票
   发表时间:2010-03-02  
johnson.lee 写道
andsofish 写道
我用正则做过


刚开始写的爬虫,我是用正则做的,也不是说正则不好,正则多了,改起来,自己都看晕了,好长一大串,我写这个完成是为了爬虫的高度可定制性而出发的,我个人觉得用正则还是有点局限性。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics