Donc, j'ai en ce moment un morceau de code qui ressemble à ceci;

if browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]"):
    snipes = browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]")
else:
    print "Cant find snipes.. Retrying..."
    browser.get("https://www.rolimons.com/deals")
    time.sleep(2)
    print "Reloaded browser... Retrying..."
    if browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]"):
        snipes = browser.find_elements_by_xpath("//div[contains(@class, 'dealspg_item_cell')]")
    else:
        print "Shutting down engine..."
        browser.quit()
        checking = False
        print "Restarting script..."
        break

Tout fonctionne bien. Et il obtient 60 éléments. Maintenant, je n'ai besoin que des 10 premiers. Comment puis-je faire en sorte qu'il ne fera que find_elements_by_xpath avec une limite de 10?

Est-ce qu'il y a un moyen de faire ça?

Merci!

==== EDIT ====

Ce code prend actuellement 4 secondes. Et j'espère réduire ce temps en mettant le maximum à 10.

0
Aaron Jonk 14 mars 2019 à 15:11

2 réponses

Meilleure réponse

Vous pouvez utiliser:

//[yourXpath]/*[position()<=10]

Dans ton cas

//div[contains(@class, 'dealspg_item_cell')]/*[position()<=10]
5
Waqar Nadir 14 mars 2019 à 12:13

Bien que l'utilisation de xpath soit une bonne réponse. Vous pouvez également consulter le sélecteur css selon les performances respectives. Personnellement, j'ai rencontré un tel problème où xpath ne fonctionne pas mais le sélecteur CSS est

div.dealspg_item_cell:nth-child(-1n+10)

Explication nth-child(-1n+10)

+10 indique ici la position du nœud, d'où nous voulons choisir les éléments -1n tous les nœuds avant le 10e nœud

Disons qu'il y a un total de 11 éléments, alors la sélection serait quelque chose comme:

enter image description here

Un autre exemple serait nth-child(1n+10), cela signifie tous les autres nœuds après le 10e nœud

enter image description here

Vous pouvez en savoir plus à partir de ici

1
NarendraR 14 mars 2019 à 13:19