我正在使用JSoup,这是一个纯Java的HTML解析器库,用于从互联网上提取和解析纯HTML页面(很好,只需很少的JS)。到目前为止,如果我想要抓取的数据附加到一个非常详细的HTML元素(如<a href="....">
或<span class="myclass myotherclass">
等等),一切正常,但我对如何获取数据感到很遗憾它以有效的方式附着在身体元素上。
我可以轻松地在JSoup中获取<body>
标签,但是这个标签中的文字通常是一团糟,不可能在我需要抓取的许多网页中概括它内部的内容(大约250左右) )。如果我们有类似
<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...
所以我的问题是如何在这里使用DOM树有效地获得Data*
,或者我可能在这个问题陈述中显而易见,因为我不是一个Web开发人员,这只是一个爱好项目。
我有一些想法:预处理HTML以在这些标记周围添加某种标记,我可以使用JSoup轻松地将其拉出来(就像带有类的<span>
标记一样)。另一个想法是使用XPath来获取文档该部分的确切路径。但是,似乎这两种想法都要求我能够首先获得数据。
答案 0 :(得分:0)
我做了同样的事情,我发现将Jsoup与HTML清理器混合起来更好,基本上你需要HTML清理器以获得你的dom树然后你可以使用JSOP