È possibile utilizzare Ruby per snellire un grande risultati esposti a elementi specifici:
page.css('div.one')[1,2] # Two items starting at index 1 (2nd item)
page.css('div.one')[1..2] # Items with indices between 1 and 2, inclusive
Perché Rubino indicizzazione parte da zero si deve prendere cura con cui gli elementi che si desidera.
In alternativa, è possibile utilizzare selettori CSS per trovare la nth item:
# Second and third items from the set, jQuery-style
page.css('div.one:eq(2),div.one:eq(3)')
# Second and third children, CSS3-style
page.css('div.one:nth-child(2),div.one:nth-child(3)')
Oppure si può usare XPath per ottenere incontri tornare specifici:
# Second and third children
page.xpath("//div[@class='one'][position()=2 or position()=3]")
# Second and third items in the result set
page.xpath("(//div[@class='one'])[position()=2 or position()=3]")
Con entrambe le alternative CSS e XPath notare che :
- Numerazione inizia da 1, non 0
È possibile utilizzare at_css
e at_xpath
per ripristinare il primo elemento di corrispondenza, anziché un NodeSet.
# A NodeSet with a single element in it:
page.css('div.one:eq(2)')
# The second div element
page.at_css('div.one:eq(2)')
Infine, si noti che se si seleziona un singolo elemento da indice con XPath, è possibile utilizzare un formato più breve:
# First div.one seen that is the second child of its parent
page.at_xpath('//div[@class="one"][2]')
# Second div.one in the entire document
page.at_xpath('(//div[@class="one"])[2]')
Originariamente questa risposta ha avuto il CSS 'div # One' . Questo trova un div con un * id * di 'one', ma l'HTML ha * classes * di' one'. Ecco perché ho creato il CSS 'div.one'. '# seleziona un ID,' .' seleziona una classe. –