nekohtml 用法


//nekohtml结合xpath用法
DOMParser parser = new DOMParser();
try {
//设置网页的默认编码
parser.setProperty("http://cyberneko.org/html/properties/default-encoding","gb2312");
/*The Xerces HTML DOM implementation does not support namespaces
and cannot represent XHTML documents with namespace information.
Therefore, in order to use the default HTML DOM implementation with NekoHTML's
DOMParser to parse XHTML documents, you must turn off namespace processing.*/
parser.setFeature("http://xml.org/sax/features/namespaces", false);

String strURL = "http://product.dangdang.com/product.aspx?product_id=9317290";
BufferedReader in = new BufferedReader(
new InputStreamReader(
new URL(strURL).openStream()));
parser.parse(new InputSource(in));
in.close();
} catch (Exception e) {
e.printStackTrace();
}
Document doc = parser.getDocument();
// tags should be in upper case
String productsXpath = "/HTML/BODY/DIV[2]/DIV[4]/DIV[2]/DIV/DIV[3]/UL[@class]/LI[9]";
NodeList products;
try {
products = XPathAPI.selectNodeList(doc, productsXpath);
System.out.println("found: " + products.getLength());
Node node = null;
for(int i=0; i< products.getLength();i++)
{
node = products.item(i);
System.out.println( i + ":\n" + node.getTextContent());
}
}catch (TransformerException e) {
e.printStackTrace();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设置解析器参数   为了更加精确的控制解析的动作,nekohtml提供了相应的设置函数。如下列: // settings on HTMLConfiguration org.apache.xerces.xni.parser.XMLParserConfiguration config = new org.cyberneko.html.HTMLConfiguration(); config.setFeature("http://cyberneko.org/html/features/augmentations", true); config.setProperty("http://cyberneko.org/html/properties/names/elems", "lower"); // settings on DOMParser org.cyberneko.html.parsers.DOMParser parser = new org.cyberneko.html.parsers.DOMParser(); parser.setFeature("http://cyberneko.org/html/features/augmentations", true); parser.setProperty("http://cyberneko.org/html/properties/names/elems", "lower");nekohtml功能(feature)列表 功能 默认值 描述 http://cyberneko.org/html/features/balance-tags True 是否允许增补缺失的标签。如果要以XML方式操作HTML文件,此值必须为真。此处提供设置功能,为了性能的原因。 http://cyberneko.org/html/features/balance-tags/ignore-outside-content False 是否忽略文档根元素以后的数据。如果为false,<html>和<bod>被忽略,所有的内容都被解析。 http://cyberneko.org/html/features/document-fragment False 解析HTML片段时是否作标签增补。此功能不要用在DOMParser上,而要用在DOMFragmentParser上。 http://apache.org/xml/features/scanner/notify-char-refs False 当遇到字符实体引用(如&#x20;)是否将(#x20)报告给相应地文档处理器。 http://apache.org/xml/features/scanner/notify-builtin-refs False 当遇到XML内建的字符实体引用(如&amp;)是否将(amp)报告给相应地文档处理器。 http://cyberneko.org/html/features/scanner/notify-builtin-refs False 当遇到HTML内建的字符实体引用(如&copy;)是否将(copy)报告给相应地文档处理器。 http://cyberneko.org/html/features/scanner/script/strip-comment-delims False 是否剥掉<script>元素中的<!-- -->等注释符。 http://cyberneko.org/html/features/augmentations False 是否将与HTML事件有关的infoset项包括在解析管道中。 http://cyberneko.org/html/features/report-errors False 是否报告错误。nekohtml属性列表 属性 默认值 值域 描述 http://cyberneko.org/html/properties/filters null XMLDocumentFilter[] 在解析管道的最后按数组顺序追加自定义的处理组件(过滤器),必须为数组类型。 http://cyberneko.org/html/properties/default-encoding Windows-1252 IANA encoding names 默认的HTML文件编码 http://cyberneko.org/html/properties/names/elems upper upper,lower,match 如果整理识别出的元素名称 http://cyberneko.org/html/properties/names/attrs lower upper,lower,no-change 如果整理识别出的属性名称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值