论坛首页 Java企业应用论坛

Java解析HTML

浏览 22229 次
锁定老帖子 主题:Java解析HTML
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-29  
看了下,有很多parser,没有一个个看,下了个http://sourceforge.net/projects/htmlparser/files/

节点解析是用遍历方式的,或者遍历时加个filter

	public static void printNode(NodeList nodelist) {
		for (int i = 0; nodelist != null && i < nodelist.size(); i++) {
			Node node = nodelist.elementAt(i);
			System.out.print(node.getText());
			
			printNode(node.getChildren());
		}
	}

	public static void main(String[] args) {
		try {
			Parser parser = new Parser(url);
			NodeList nodelist = parser.parse(null);
			//printNode(nodelist);
			
			NodeFilter filter = new TagNameFilter("tr");
			NodeList list = nodelist.extractAllNodesThatMatch(filter, true);
			printNode(list);

		} catch (ParserException e) {
			e.printStackTrace();
		}

	}


加入html中有

...
<div id=xxx>
...
</div>
...


在js中,有getElementById(xxx)马上就能找到此div,但是java里貌似没有此现成的方法,难不成要一个个遍历,然后加if--then--else,那太累了。

http://www.open-open.com/30.htm 里面还有其他的parser,没一个个看

大家说说你们经历。
   发表时间:2010-11-29  
貌似org.w3c.dom.有这样的方法

NodeList Document.getElementsByTagName(String tagname)

ById()估计还是没
0 请登录后投票
   发表时间:2010-11-30   最后修改:2010-11-30
dom4j 支持 xpath
div[@id=123]
0 请登录后投票
   发表时间:2010-11-30  
jsoup
0 请登录后投票
   发表时间:2010-11-30  
NekoHTML + HttpClient with xpath

只花一天就写成了一个配置型的方案,抓百万条产品信息入库 毫不费力...

感叹要防网络爬虫不容易...

顺便给个 防网络爬虫 比较成功的网站 www.icmaster.com

里面的产品信息 都是通过 存储code对应数据 -> ajax 获取的,POST请求参数 干扰项多

还有无意义的标签 干扰 xpath

当然,做了这么多东西还是照样抓...
0 请登录后投票
   发表时间:2010-11-30  
目前没有接触过需求需要专门去抓别人的东西。。但是以前面试写过一个抓信息的。。
当时就是抓javaeye。。我愚蠢的使用正则表达式抓。。看来比较麻烦啊。
xpath,我就怕他页面万一不规范,不能正常的操作了。
0 请登录后投票
   发表时间:2010-11-30  
使用Tidy 把html转成xml,然后用dom4j 解析xml;
0 请登录后投票
   发表时间:2010-11-30  
JSOUP谁用谁知道
0 请登录后投票
   发表时间:2010-11-30  
先转成xml,再用xalan解析  支持xpath操作
0 请登录后投票
   发表时间:2010-11-30  
恩,其实只要支持XPATH,剩下的事情就好办了...
0 请登录后投票
论坛首页 Java企业应用版

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