web-dev-qa-db-fra.com

Comment sélectionner cet élément dans JSOUP?

C'est la structure HTML:

enter image description here

Element link = doc.select("div.subtabs p").first();

Cela ne semble pas fonctionner. Comment sélectionner cette p?

25
HackToHell

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.

24
jmort253

div#content p. Ce n'est pas un enfant de .subtabs.

4

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

1
Sai Sunder

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.

1
swiss_steve

Element link = doc.select("div.subtabs + p") Il trouve un élément immédiatement précédé d'un frère 

0