大家好 我有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文本中获取第一个纯文本
答案 0 :(得分:3)
您标记了jsoup,因此您正在使用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平台上使用而设计的,因此几乎可以在任何地方使用。没什么好看的,但是将文本流转换为标签和非标签的简单方法。延迟加载属性,如果你基本上忽略了标签,那么很快就可以使用。