簡體   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