如何在html /文本内容中获取文本?

时间:2011-02-10 15:43:59

标签: java html-parsing jsoup

大家好 我有html / text之类的东西:

<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文本中获取第一个纯文本

3 个答案:

答案 0 :(得分: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);

结果:

  

第一个文字

另见:

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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