これはHTML構造です:
Element link = doc.select("div.subtabs p").first();
それはうまくいかないようです。 p
を選択するにはどうすればよいですか?
Class = "subtabs"を含むDIVは、実際にはp
要素の親ではなく、p
の兄弟です。 p
を取得するには、まずid = "content"を持つ親DIVへの参照を取得する必要があります。
Element link = doc.select("div#content > p").first();
さらに、div#contentの子を選択していることを示す>
記号が必要です。
親>子:親から直接派生する子要素。 div.content> pはp要素を検索します。 and body> * bodyタグの直接の子を検索します
将来的にJSOUP CSSセレクターに行き詰まった場合は、 JSOUPセレクター構文クックブック をチェックしてください。これには、いくつかの素晴らしい例と説明があります。
div#content p
。 .subtabs
の子ではありません。
Element link = doc.select("div.subtabs + p")
兄弟の直前の要素を見つけます
抽出しようとしているpタグはdivの子ではありません。兄弟です。親divのIDはcontentで、必要なpタグは、親内の最初のpタグです。したがって、doc.select("div#content > p").first();
を使用します
#はIDを意味し、>はRHSがLHSの子であることを意味します。したがって、ステートメントは、idがcontentのdivの子である最初の段落を取得することを意味します
Chrome SelectorGadget は、ポイントアンドクリックするだけで、jSoupのCSSセレクターを構築するのに非常に役立ちます。特定のフィールドを対象とする場合、開発時間を数時間節約できました。
これを試して:
Element link = doc.select("div.subtabs > p").first();