[英]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.