所以,我现在有一段看起来像这样的代码;
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来减少此时间。
答案 0 :(得分:5)
您可以使用:
//[yourXpath]/*[position()<=10]
以您的情况
//div[contains(@class, 'dealspg_item_cell')]/*[position()<=10]
答案 1 :(得分:1)
尽管使用xpath是一个很好的答案。您还可以根据性能分别引用CSS选择器。我个人遇到过这样的问题,其中xpath不起作用,但CSS选择器是
div.dealspg_item_cell:nth-child(-1n+10)
说明nth-child(-1n+10)
+10
在此处指示节点位置,我们要从中选择元素
-1n
第十个节点之前的所有节点
让我们说总共有11个元素,那么选择将像这样:
另一个示例为nth-child(1n+10)
,表示第10个节点之后的所有其他节点
您可以从here
探索更多内容