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