我正在使用 JSoup,它是一个纯 Java 的 HTML 解析器库,用于从互联网上提取和解析纯 HTML 页面(嗯,只有很少的 JS)。到目前为止,如果我想要抓取的数据附加到一个非常详细的 HTML 元素(如 <a href="....">
或 <span class="myclass myotherclass">
等),一切都工作正常,但我不知道如何以有效的方式获取附加到 body 元素的数据。
我可以获得<body>
在 JSoup 中轻松标记,但此标记中的文本通常很困惑,并且不可能在我需要抓取的许多网页(大约 250 个左右)中概括其中的内容。我想知道 HTML 树在这种情况下是否有用,如果我们有类似的东西
<span class="myclass">...</span>
<p>something.....</p>
<!-- We are back in the body here according to chrome devtools -->
Data1: some data here...
Data2: more data here...
...
<!-- We get a similar pile of HTML here except with different data in the span and p tags -->
<span class="myclass">...</span>
<p>something.....</p>
<!-- We are back in the body here according to chrome devtools -->
Data1: some data here...
Data2: more data here...
所以我的问题是我怎样才能到达Data*
在这里有效地使用 DOM 树,或者也许我在这个问题陈述中遗漏了明显的内容,因为我无论如何都不是 Web 开发人员,这只是一个业余爱好项目。
我的一些想法:预处理 HTML,在这些标签周围放置某种标签,我可以使用 JSoup 轻松提取这些标签(例如带有类的 <span>
标签)。另一个想法是使用 XPath 获取文档该部分的确切路径。然而,这两个想法似乎都要求我首先能够获取数据。
最佳答案
我做了和你一样的事情,我发现将 Jsoup 与 HTML 清理器混合更好,基本上你需要 HTML 清理器才能获得 dom 树,然后你可以使用 JSOP
关于java - 从 html <body> 元素中抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30063805/