Python:硒:find_elements_by_xpath 最多 10

Python: Selenium: find_elements_by_xpath max 10

所以,我现在有一段看起来像这样的工作代码;

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 来减少这个时间。

您可以使用:

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

你的情况

//div[contains(@class, 'dealspg_item_cell')]/*[position()<=10]

虽然使用 xpath 是很好的答案。您还可以根据各自的性能参考 css 选择器。我个人遇到了这样的问题,其中 xpath 不工作但 CSS 选择器是

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

说明nth-child(-1n+10)

+10表示这里的节点位置,我们要从那里挑选元素 -1n第10个节点之前的所有节点

假设总共有 11 个元素,那么选择将类似于:

另一个例子是nth-child(1n+10),它表示第10个节点之后的所有其他节点

您可以从 here

中探索更多