【发布时间】:2015-08-29 00:24:22
【问题描述】:
我是 Jsoup 库的新手。我有这样的html。
<tr class="srrowns">
<td class="num"> <a name="y2015"> </a> 1 </td>
<td nowrap><a href="/cve/CVE-2015-4004/" title="CVE-2015-4004 security vulnerability details">CVE-2015-4004</a></td>
<td><a href="/cwe-details/119/cwe.html" title="CWE-119 - CWE definition">119</a></td>
<td class="num"> <b style="color:red"> </b> </td>
<td> DoS Overflow +Info </td>
<td>2015-06-07</td>
<td>2015-06-08</td>
<td>
<div class="cvssbox" style="background-color:#ff8000">
8.5
</div></td>
<td align="center">None</td>
<td align="center">Remote</td>
<td align="center">Low</td>
<td align="center">Not required</td>
<td align="center">Partial</td>
<td align="center">None</td>
<td align="center">Complete</td>
</tr>
当我运行element.select("td") 时,它正在返回
<td class="num"> <a name="y2015"> </a> 1 </td>
<td nowrap><a href="/cve/CVE-2015-4004/" title="CVE-2015-4004 security vulnerability details">CVE-2015-4004</a></td>
<td><a href="/cwe-details/119/cwe.html" title="CWE-119 - CWE definition">119</a></td>
<td class="num"> <b style="color:red"> </b> </td>
<td> DoS Overflow +Info </td>
<td>2015-06-07</td>
<td>2015-06-08</td>
<td>
<div class="cvssbox" style="background-color:#ff8000">
8.5
</div></td>
<td align="center">None</td>
<td align="center">Remote</td>
<td align="center">Low</td>
<td align="center">Not required</td>
<td align="center">Partial</td>
<td align="center">Complete</td>
显然,删除“Complete”之前的<td align="center">None</td>。有什么方法可以从 Jsoup Selector 获取所有项目?
我的代码在 Scala 中看起来像这样。
val connection = Jsoup.connect(url).get()
val treelist = connection.select("tr.srrowns:contains(CVE-2015-4001)")
val tree = tree.select("td")
刚刚看到Jsoup select是使用LinkedHashSet实现的。我的目标是使用Jsoup.text()从每个标签中提取文本。是否有解决方法,或者我是否必须编写一个解析器来获取所有节点(包括重复节点)?
非常感谢。
【问题讨论】:
-
你能发布更多你的代码吗?
-
嗨,我刚刚添加了我写的代码。
标签: java scala web-scraping jsoup