Amazonで商品レビューを解析していますが、リンク内のテキストを含むレビューの完全なテキストを取得したいと思います。
私は現在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".
私が得たもの:「信じられないほどのメーカーから、私たちはこの他の製品を持っています。それは素晴らしいスペックですが、どういうわけか優れています」。
私が欲しいもの:「信じられないほどの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がリンクからのテキストを保持できないとは信じられません。これは、彼らがこれを無視したとは信じられないほど一般的です。特徴。