我正在解析亞馬遜上的產品評論,我希望獲取評論的完整文本,其中包含鏈接中的文本。在文本節點中獲取錨點中的文本
我目前正在使用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