Питон: Селен: find_elements_by_xpath max 10 - PullRequest
0 голосов
/ 14 марта 2019

Итак, у меня сейчас есть рабочий фрагмент кода, который выглядит следующим образом:

            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

Все это прекрасно работает.И это получает 60 элементов.Теперь мне нужны только первые 10. Как я могу сделать так, чтобы это было только find_elements_by_xpath с пределом 10?

Есть ли способ сделать это?

Спасибо!

==== РЕДАКТИРОВАТЬ ====

Этот код занимает на данный момент 4 секунды.И я надеюсь сократить это время, установив максимум на 10.

Ответы [ 2 ]

5 голосов
/ 14 марта 2019

вы можете использовать:

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

в вашем случае

//div[contains(@class, 'dealspg_item_cell')]/*[position()<=10]
1 голос
/ 14 марта 2019

Хотя использование xpath - хороший ответ. Вы также можете сослаться css селектор согласно производительности соответственно. Лично я столкнулся с такой проблемой, когда xpath не работает, но CSS-селектор

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

Объяснение nth-child(-1n+10)

+10 указывает здесь положение узла, откуда мы хотим выбрать элементы -1n все узлы до 10-го узла

Допустим, есть всего 11 элементов, тогда выбор будет выглядеть примерно так:

enter image description here

Другим примером будет nth-child(1n+10), это означает, что все остальные узлы после 10-го узла

enter image description here

Вы можете узнать больше из здесь

...