C'est la structure HTML:
Element link = doc.select("div.subtabs p").first();
Cela ne semble pas fonctionner. Comment sélectionner cette p
?
La DIV avec la classe = "subtabs" n'est en fait pas le parent de l'élément p
, mais le frère de p
. Pour récupérer la p
, vous devez d'abord obtenir une référence à la DIV parent qui a l'id = "content":
Element link = doc.select("div#content > p").first();
De plus, vous aurez besoin du symbole >
pour indiquer que vous sélectionnez un enfant de contenu div #.
parent> enfant: éléments enfants qui descendent directement du parent, par exemple. div.content> p trouve p éléments; and body> * trouve les enfants directs de la balise body
Si vous êtes bloqué par un sélecteur JSOUP CSS à l'avenir, consultez le livre de recettes JSOUP Selector Syntax , qui contient quelques exemples et explications intéressants.
div#content p
. Ce n'est pas un enfant de .subtabs
.
La balise p que vous essayez d'extraire n'est pas un enfant du div. C'est un frère. L'identifiant de la division parent est content et la balise p de votre choix est la première balise p de son parent. Alors utilisez doc.select("div#content > p").first();
# Signifie id et > signifie que RHS est un enfant de LHS. Donc, la déclaration signifie obtenir le premier paragraphe qui est enfant à div avec l'id comme content
Chrome SelectorGadget est très utile pour construire des sélecteurs CSS pour jSoup, simplement par point et par clic. Cela m'a permis de gagner des heures de développement en essayant de cibler des champs spécifiques.
Element link = doc.select("div.subtabs + p")
Il trouve un élément immédiatement précédé d'un frère