繁体   English   中英

使用标准Java从HTML段中提取文本

[英]extract text from HTML segment using standard java

我正在接收一段HTML文档作为Java String,我想提取它的内部文本。 ----> hello world 例如: hello ----> hello world

有没有一种方法可以使用Java标准库提取文本? 也许比使用空字符串打开/关闭标签正则表达式更有效? 谢谢,

不要使用正则表达式来解析HTML,而应使用HtmlCleaner之类的专用解析器。

使用正则表达式通常可以在第一时间就可以工作,然后变得越来越复杂,直到无法适应为止。

不要使用正则表达式来解析HTML ,例如使用jsoup:Java HTML Parser 它具有从DOM中选择元素的便捷方法。

示例提取Wikipedia主页,将其解析为DOM,然后从“新闻中”部分的标题中选择元素列表:

 Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); Elements newsHeadlines = doc.select("#mp-itn ba"); 

JDK中还有一个HTML解析器: javax.swing.text.html.parser.Parser ,可以这样应用:

Reader in = new InputStreamReader(new URL(webpageURL).openConnection().getInputStream());
ParserDelegator parserDelegator = new ParserDelegator();
parserDelegator.parse(in, harvester, true);

然后,根据要查找的类型:开始标签,结束标签,属性等,定义适当的回调函数:

@Override
public void handleStartTag(HTML.Tag tag,
        MutableAttributeSet mutableAttributeSet, int pos) {

    // parses the HTML document until a <a> or <area> tag is found
    if (tag == HTML.Tag.A || tag == HTML.Tag.AREA) {

        // reading the href attribute of the tag
        String address = (String) mutableAttributeSet
                .getAttribute(Attribute.HREF);

    /* ... */

我也会说-不要在HTML中使用正则表达式。 ;-)

您可以使用JTidy试一试

您可以使用HTMLParser ,这是一个开放源代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM