[JAVA] Zu der Sache, dass: n-tes Kind (-n + m) im Selektor von jsoup nicht wie beabsichtigt funktioniert

zunaechst

Ich habe aus Bequemlichkeitsgründen den [Selektor] von jsoup (https://jsoup.org/apidocs/org/jsoup/select/Selector.html) verwendet, aber das Verhalten von: n-tes Kind ist seltsam, also habe ich es überprüft (zu viel). Ich habe es nicht überprüft) und seine Gegenmaßnahmen. ** Ich habe viel geschrieben, aber ich konnte mit ": lt (n)" anstelle von ": nth-child (-n + m)" machen, was ich wollte. (Beschreibung am Ende) **

Über die Umwelt

Entwicklungsumgebung: Eclipse-Plejaden 4.6.3 Java : Java8 jsoup: 1.9.2 (* Gleiches Ereignis in 1.10.3)

Was du machen willst

Ich möchte nur die ersten 5 der mehreren Elemente erhalten, die ich mit dem Selektor erhalten habe

Bei Angabe mit einem normalen Selektor (CSS, JavaScript usw.)

Zum Beispiel, wenn Sie nur das a-Tag in den folgenden Elementen erhalten möchten.

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

Die Spezifikation ist wie folgt

div.list> ul > li > a

In diesem Fall werden alle 20 Fälle abgedeckt. Von diesen werden nur die ersten 5 Fälle wie folgt geschrieben.

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

Bei Angabe mit dem Selektor von jsoup

Wenn Sie oben angeben, ist aus irgendeinem Grund "5. und nachfolgende" das Ziel. Mit anderen Worten, 6 Elemente von "Link 5" bis "Link 10" werden als Ziel ausgewählt.

Wenn Sie jedoch Folgendes angeben, können Sie auf die "ersten 5 Fälle" abzielen.

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

Der Punkt ist

-Einschließen: n-tes Kind mit: nicht --N + 6 statt -n + 5

ist.

Ich weiß nicht, warum das funktioniert, aber es scheint sich so zu verhalten.

An erster Stelle!

Aus den Kommentaren, die ich erhalten habe, war es einfach zu verwenden ": lt ()" ...

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

nicht

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

Sie können Ihre Anfrage mit erfüllen.

Ich machte ein Geräusch m (_ _) m

Recommended Posts

Zu der Sache, dass: n-tes Kind (-n + m) im Selektor von jsoup nicht wie beabsichtigt funktioniert
Wenn das Formular wie "Auswählen von Materialisieren" nicht ordnungsgemäß funktioniert
@BeforeStep funktioniert nicht mit Spring-Batch-Tasklet
Über die Angelegenheit, dass der Code zum Lesen des C-Strukturelements (Char-Array), das in Swift 2.3 in Swift 3 funktionierte, nicht funktionierte
[Rails] Behebung des Problems, dass das Sitzungszeitlimit nicht funktioniert
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird
Wenn die Tastenkombination Strg + in Eclipse nicht funktioniert, kann das Deaktivieren der Begrüßung hilfreich sein