html开源库,开源Html分析器解析库对比

几乎所有已知的HTML解析器都是实现W3C DOM API(JAXP的API一部分,用于XML处理),并给你一个org.w3c.dom.Document,便于通过JAXP API直接使用。主要的区别通常是是否能分析有问题的html。大多数解析器是在一定程度上都宽容非结构非完整的HTML,如JTidy,NekoHTML,TagSoup和HtmlCleaner。您通常可以使用这种类型的HTML解析器对付比较“整洁”的HTML源,这样就可以使用W3C DOM和 JAXP API.

NekoHTML:

final DOMParser parser = new DOMParser();

try {

parser.parse(new InputSource(urlIS));

document = parser.getDocument();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

TagSoup:

final Parser parser = new Parser();

SAX2DOM sax2dom = null;

try {

sax2dom = new SAX2DOM();

parser.setContentHandler(sax2dom);

parser.setFeature(Parser.namespacesFeature, false);

parser.parse(new InputSource(urlIS));

} catch (Exception e) {

e.printStackTrace();

}

document = sax2dom.getDOM();

jTidy:

final Tidy tidy = new Tidy();

tidy.setQuiet(true);

tidy.setShowWarnings(false);

tidy.setForceOutput(true);

document = tidy.parseDOM(urlIS, null);

HtmlCleaner:

final HtmlCleaner cleaner = new HtmlCleaner(urlIS);

try {

cleaner.clean();

document = cleaner.createDOM();

} catch (Exception e) {

e.printStackTrace();

}

用以上代码做测试抓取文档html中链接标签,赢家是HtmlCleaner,它快速和容易实现。一个缺点HtmlCleaner是,它不提供一个Maven仓库。

HtmlUnit

HtmlUnit使您能够像一个在WebBrowser里面编程。输入表单的值,单击按钮,调用JavaScript等等。它不只是一个HTML解析器。是一个真正的“图形界面的web浏览器”和HTML的单元测试工具。

Jsoup:

提供一个完全自己的API。它给你像使用jQuery般的CSS选择器,并提供了一个灵活的API来遍历HTML DOM树来获得感兴趣的内容。

HTML DOM树的遍历是Jsoup的主要特征。有过org.w3c.dom.Document打交道的人知道这是多么痛苦的地狱,可以使用jsoup详细的NodeList和节点API来遍历DOM。当然,XPath的使生活更轻松,但是它难以学习。

如果你想从通常的现实世界HTML中提取特定数据,Jsoup是选择。

String html = "

An example link.

";

Document doc = Jsoup.parse(html);

Element link = doc.select("a").first();

String text = doc.body().text(); // "An example link"

String linkHref = link.attr("href"); // "http://example.com/"

String linkText = link.text(); // "example""

String linkOuterH = link.outerHtml();

// "example"

String linkInnerH = link.html(); // "example"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值