我正在解析亚马逊上的产品评论,我希望获取评论的完整文本,其中包含链接中的文本。在文本节点中获取锚点中的文本
我目前正在使用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不允许保留链接文本,这太常见了相信他们忽略了这个功能。
不幸的不是!如果你使用container.text(),我将获得包含在div中的EVERYTHING。回到这个例子中,结果如下: “Something ...(text included in)嵌套跨度和divs ... ____ \”从令人难以置信的SOMEPRODUCT的制造商,我们有这种其他产品blablabla .. 。惊人的规格,但这种其他产品是以某种方式更好\“” – Tex
明白了。我已经更新了答案。 –
非常接近,因此接受:-) – Tex