如果需要在HTML页面中提取数据,那么NekoHTML 是个不错的工具。因为HTML跟XML不一样,可能存在一些格式不完整的元素,譬如没有end tag的table等,这个时候,NekoHTML是个很尽责的清道夫和修理工,可以帮助我们整理这些缺陷数据,最终生成一个DOM Tree。 得到DOM Tree话,使用XPath就可以轻松获取所需数据了:-)
下面是几个需要注意的问题:
1、如何使用NekoHTML?
必须在 Java Build Path里加入 nekohtml.jar , xercesImpl.jar 以及xalan.jar。下载的NekoHTML目录中并没有xercesImpl.jar和xalan.jar,需要自己下载。
2、如何获取XPath?
当然大家可以把网页的代码下下来,然后使用“人工智能”的方式获取,但是过程确实让人眼花缭乱、心力交瘁。使用FireBug吧,可以自动生成XPath。
updated:
Firebug生成的XPath中如果含有TBODY标签,需要把TBODY去掉,否则不能正确获取网页的内容。如Firebug生成的XPath为/html/body/table/tbody/tr,那么则需要修改为/html/body/table/tr。
4、如何正确结合NekoHTML和XPath?
XPath的Tag必须大写。如
String divXpath = "//DIV";//正确
String divXpath = "//div";//错误
节点的属性按照页面中实际的大小写进行书写
如: //DIV[@class="title"]/EM[@class="right"]/A
意思就是找到页面中div的class为title的大块,然后向下找节点为EM,同时其class为right的小块,再继续延伸找到此小块下的A节点。
需要注意的是,你写的xpath路径必须得是连续的,比如说
<div class="title">
<div>
<em class="right"><a></a></em>
</div>
</div>
这个时候如果你按照上述的xpath来找a标签的话,很显然是找不到的,因为div class=“title”下是没有em的,对于新手需要特别注意。
对于xpath的写法,可以参考 http://www.w3school.com.cn/xpath/
5.对于table的处理
需要注意的是如果你给解析器的字符串是下面的这种形式
<tbody>
<tr>
<td id="tag"><a href="sdfs.html">ABC</a></td>
</tr>
</tbody>
如果我现在想要找上述内容中的td,给定XPATH //TD[@id='tag'],你会发现,程序根本无法找到这个node,原因是对于neko来说,对于一个不完整的table,他根本不会将其组装成一个dom树,也就是说上面的内容经过解析器转换之后,就只会保留
<a href='sdfs.html'>
ABC
</a>
这一段内容,其他的已经被neko无视掉了。
解决办法,在这段内容的前后加入一段table的闭合标签之后再放入解析器中进行解析
<table>
<tbody>
<tr>
<td id="tag"><a href="sdfs.html">ABC</a></td>
</tr>
</tbody>
</table>
附件里面放置的nekohtml需要使用到的三个jar包。
分享到:
相关推荐
NekoHTML是一个Java语言的 HTML扫描器和标签补全器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能够扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档 过程中常...
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的...
NekoHTML技术预研说明,如何进行HTML页面解析,网页信息抽取
html解析器nekohtml-1.9.13.zip
NULL 博文链接:https://thrillerzw.iteye.com/blog/1924229
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的...
NekoHTML is written using the Xerces Native Interface (XNI) that is the foundation of the Xerces2 implementation. This enables you to use the NekoHTML parser with existing XNI tools without ...
NekoHTML学习笔记.doc
NULL 博文链接:https://rensanning.iteye.com/blog/1551831
可以解析html的包,和例子,有源代码,很简单,不明白请看压缩包里的readme
NULL 博文链接:https://tivonhou.iteye.com/blog/2204060
nekohtml.jar 解析html的jar包 非常的实用
nekoHtml 1.9.19 加 source 源码 html分析jar
NekoHTML的相关用法以及代码包,以及详细的用法和实例。。。。。
NeKoHTML:用于java的html编辑。此文件是NeKoHTML V1.9.21版本的Java包合集。
nekohtml.jar nekohtmlSamples.jar
nekohtml-1.9.14源码及jar包
采用nekohtml补全html到xhtml,结合dom,运用dom4j,支持xpath,强大的网抓工具!
nekohtml-1.9.18_