3

大家好,我有类似的html/文本:

<html><head><style type="text/css">
</style></head>
<body><div style="font-family:times new roman,new york,times,serif;font-size:14pt">first text<br><div><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 14pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font size="2" face="Tahoma"><hr size="1"><b><span style="font-weight: bold;">one:</span></b> second text<br><b><span style="font-weight: bold;">two:</span></b> third text<br><b><span style="font-weight: bold;">three:</span></b> fourth text<br><b><span style="font-weight: bold;">five:</span></b> fifth text<br></font><br>

我想在上面的html内容中提取名为“first text”的文本注意:这个html内容不是静态的而是动态的,所以一般的想法是获取html文本中的第一个纯文本

4

3 回答 3

3

您标记了,因此您正在使用Jsoup。这已经是一个不错的选择;)

以下是使用 Jsoup 的方法:

String html = "<html><head><style type=\"text/css\"></style></head><body><div style=\"font-family:times new roman,new york,times,serif;font-size:14pt\">first text<br><div><br></div><div style=\"font-family: times new roman,new york,times,serif; font-size: 14pt;\"><br><div style=\"font-family: times new roman,new york,times,serif; font-size: 12pt;\"><font size=\"2\" face=\"Tahoma\"><hr size=\"1\"><b><span style=\"font-weight: bold;\">one:</span></b> second text<br><b><span style=\"font-weight: bold;\">two:</span></b> third text<br><b><span style=\"font-weight: bold;\">three:</span></b> fourth text<br><b><span style=\"font-weight: bold;\">five:</span></b> fifth text<br></font><br>";
Document document = Jsoup.parse(html);
String firstText = document.select(":containsOwn(text)").first().ownText();
System.out.println(firstText);

结果:

第一个文本

也可以看看:

于 2011-02-10T21:00:36.937 回答
1

您可以使用 SAX 样式的 HTML 解析器,例如TagSoup

为此,请使用扩展初始化解析器,DefaultHandler以检测第一次characters(...)调用该方法的时间并保存结果。

查看http://sax.sourceforge.net/quickstart.html以了解如何设置解析器的一些方向。

于 2011-02-10T15:59:24.860 回答
0

如果您想要一些相当简单的东西,请查看我的PageScraper 类,它是为在 Java ME 平台上使用而设计的,因此几乎可以在任何地方使用。没有什么花哨的,而是一种将文本流转换为标签和非标签的简单方法。延迟加载属性,如果您基本上忽略标签,那么使用起来非常快。

于 2011-02-10T15:54:16.100 回答