[JAVA] À propos du fait que: nth-child (-n + m) ne fonctionne pas comme prévu dans le sélecteur de jsoup

en premier

J'ai utilisé le [selector] de jsoup (https://jsoup.org/apidocs/org/jsoup/select/Selector.html) pour plus de commodité, mais le comportement de: nth-child est étrange, donc je l'ai vérifié (trop) Je ne l'ai pas vérifié) et ses contre-mesures. ** J'ai beaucoup écrit, mais j'ai pu faire ce que je voulais faire avec ": lt (n)" au lieu de ": nth-child (-n + m)". (Description à la fin) **

À propos de l'environnement

Environnement de développement: Eclipse pleiades 4.6.3 Java : Java8 jsoup: 1.9.2 (* 1.10.3 est le même événement)

Chose que tu veux faire

Je veux obtenir seulement les 5 premiers des multiples éléments que j'ai obtenus avec le sélecteur

Lors de la spécification avec un sélecteur normal (CSS, JavaScript, etc.)

Par exemple, si vous souhaitez obtenir uniquement la balise a dans les éléments suivants.

<div class="list">
  <ul>
    <li><a href="aaa">Lien 1</a></li>
    <li><a href="aaa">Lien 2</a></li>
    <li><a href="aaa">Lien 3</a></li>
    <li><a href="aaa">Lien 4</a></li>
    <li><a href="aaa">Lien 5</a></li>
    <li><a href="aaa">Lien 6</a></li>
    <li><a href="aaa">Lien 7</a></li>
    <li><a href="aaa">Lien 8</a></li>
    <li><a href="aaa">Lien 9</a></li>
    <li><a href="aaa">Lien 10</a></li>
  </ul>
</div>

La spécification est la suivante

div.list> ul > li > a

Dans ce cas, les 20 cas seront couverts. Parmi ceux-ci, seuls les 5 premiers cas seront écrits comme suit.

div.list> ul > li:nth-child(-n+5) > a

Lors de la spécification avec le sélecteur de jsoup

Si vous spécifiez ce qui précède, pour une raison quelconque, "5e et suivant" sera la cible. En d'autres termes, 6 éléments du «Lien 5» au «Lien 10» sont ciblés.

Cependant, en spécifiant ce qui suit, vous pouvez cibler les «5 premiers cas».

div.list> ul > li:not(:nth-child(-n+6)) > a

Le point est

-Enclencher: nième enfant avec: pas --N + 6 au lieu de -n + 5

est.

Je ne sais pas pourquoi cela fonctionne, mais cela semble se comporter comme ça.

En premier lieu!

D'après les commentaires que j'ai reçus, c'était facile à utiliser ": lt ()" ...

div.list> ul > li:not(:nth-child(-n+6)) > a

ne pas

div.list> ul > li:lt(5) > a

Vous pouvez répondre à votre demande avec.

J'ai fait un bruit m (_ _) m

Recommended Posts

À propos du fait que: nth-child (-n + m) ne fonctionne pas comme prévu dans le sélecteur de jsoup
Lorsque le formulaire tel que Select of Materialize ne fonctionne pas correctement
@BeforeStep ne fonctionne pas avec le Tasklet Spring-batch
À propos du fait que le code pour lire le membre de la structure C (tableau Char) qui fonctionnait dans swift 2.3 dans swift 3 ne fonctionnait pas
[Rails] Résolution du problème selon lequel le délai d'expiration de la session ne fonctionne pas
[Rails] À propos de l'erreur selon laquelle l'image n'est pas affichée dans l'environnement de production
Si le raccourci Ctrl + ne fonctionne pas dans Eclipse, la désactivation de Welcome peut aider