【发布时间】:2019-02-21 21:52:10
【问题描述】:
我正在编写一个脚本来从网络上抓取一些数据。
我直接从浏览器复制了不同页面上几个相同元素的 XPath,这会生成 //*[@id="priceblock_dealprice"]。
但是,它们都是span 元素。我不太了解 XPath 如何在后台工作,但我假设 //span[@id="priceblock_dealprice"] 显然会更快,因为它只需要检查 span 元素?这是真的吗?
在这种特定情况下使用* 而不是span 有什么好处吗?
【问题讨论】:
-
为什么要对有 ID 的东西使用 XPath?请改用
By.id()。无论哪种方式,您都可以节省几毫秒......没什么大不了的。脚本中更可能的逻辑是减慢速度。唯一知道的方法是对您的代码进行一些分析,以查看时间花在了哪里。然后你可以解决慢的问题以及如何解决它。 -
@JeffC 为什么不使用 XPath?在 XPath 上使用
By.ID()有什么好处?并不是我的代码很慢,我只是想知道明确选择span元素是否有任何好处,因为所有元素都是span元素,而不是像浏览器建议的那样使用通配符选择器跨度> -
By.id()速度更快,在所有浏览器中得到更好的支持,并且更清楚地指示您正在做什么。 -
By.id()没有等价物,但您可以使用 CSS 选择器,它可能会快两倍...div[id*='100_dealView'] -
是的,
id*=表示 id 包含。见this reference。
标签: selenium xpath web-scraping screen-scraping