我正在解析亚马逊上的产品评论,我想获取评论的完整文本,其中包括链接中的文本。
我目前正在使用 jSoup,尽管它很好,但它只会忽略锚点。当然,我可以仅使用选择器从锚点中获取所有文本,但我会丢失有关该文本所在上下文的信息。
我认为一个例子是解释自己的最佳方式。
结构示例:
<div class="container">
<div style="a">Something...</div>
<div style="b">...Nested spans and divs... </div>
<div class="tiny">_____ </div>
" From the makers of the incredible <a href="SOMELINK">SOMEPRODUCT</a> we have this other product that blablabla.... Amazing specs, but <a href="SOME_OTHER_LINK">this other product</a> is somehow better".
我得到的是:“从令人难以置信的制造商那里,我们得到了另一种产品 blablabla ......惊人的规格,但不知何故更好”。
我想要的是:“从令人难以置信的 SOMEPRODUCT 的制造商那里,我们得到了这个其他产品,blablabla ......惊人的规格,但这个其他产品在某种程度上更好”。
我使用 jSoup 的代码:
Elements allContainers = doc.select(".container");
for (Element container : allContainers) {
String reviewText = container.ownText(); // THIS EXCLUDES TEXT FROM LINKS
StdOut.println(reviewText);
我找不到这样做的方法,因为它看起来不像 jSoup 将文本节点视为实际节点,因此这些锚似乎没有被考虑在下一个节点的子节点中。
我也对其他想法持开放态度,例如尝试使用 :not 选择器来获取它们,但我不敢相信 jSoup 不允许保留链接中的文本,这太常见了,以至于无法相信他们忽略了这一点特征。