当我使用jsoup来解析我遇到的一些html文件,例如“google.com” 在检索元素的文本时遇到问题。
例如,在使用div
函数的text
元素中,单词
我认为“程序”和“业务”是相互依存的
这不对:
<div id="fll" style="margin:19px auto;text-align:center">
<a href="/intl/en/ads/">Advertising Programs</a>
<a href="/services/">Business Solutions</a>
<a href="https://plus.google.com/" rel="publisher">+Google</a>
<a href="/intl/en/about.html">About Google</a>
</div>
您可以使用以下代码测试我的声明:
URL url = new URL("http://www.google.com");
Document document = Jsoup.parse(url, 10000);
Element element = document.select("div[id=fll]").first();
System.out.println(element.text());
输出将是:
Advertising ProgramsBusiness Solutions+GoogleAbout Google
我想知道有什么可以做的吗?
顺便说一下,我跟踪代码,发现问题就出现了 通过添加此行进行更正:
textNode.text(textNode.text() + " ");
Element
源代码的nodes
包的jsoup
类的第755行和第756行之间的
。
此问题也存在于Elements
包的select
类中,可能存在于其他text
函数中!
答案 0 :(得分:3)
jsoup中的text()
方法仅返回元素中的文本。在您的示例中,您的元素是div
。在其上调用text()
方法时,基本上删除了所有标记并保留了文本。由于程序之后没有任何空格,因此它看起来好像在Business上滑动,在这种情况下是正确的行为。
如果您想单独使用文本,可以执行以下操作(未经测试的代码):
for (Element a : div.select("a")) {
System.out.println(a.text());
}