【发布时间】:2019-08-06 19:16:23
【问题描述】:
我正在尝试从具有如下 Xpath 的网页中提取文本
//*[@id="twocols"]/tbody/tr/td[2]/table/tbody/tr[6]/td[2]
使用python代码
updatetime=driver.find_element_by_xpath('//*[@id="twocols"]/tbody/tr/td[2]/table/tbody/tr[6]/td[2]').text
这最终会引发以下错误:
NoSuchElementException: 没有这样的元素: 无法定位元素: {"method":"xpath","selector":"//*[@id="twocols"]/tbody/tr/td[2]/table /tbody/tr[7]/td[2]"}
xpath 末尾的节点 tr[7] 变为 tr[6],因为有时会在页面中添加一个附加元素。
我要提取的 HTML 数据是网页中的日期,如下所示。
<td class="">2019-08-06 16:16 BST</td>
即使真实 xpath 不断变化,我该怎么做?
提前致谢
【问题讨论】:
-
如果您不提供 html 代码或页面链接,任何人都无法提供帮助。
-
同意 IPolnik。那是最后一行(6 或 7)吗?如果答案是肯定的,那么试试这个 xpath
(//*[@id="twocols"]/tbody/tr/td[2]/table/tbody/tr)[last()]/td[2] -
您提供的
td周围将有一些元素将是确定合适选择器的关键。包括周围的html,尤其是祖先,会很有帮助。 -
这可能只是单引号和双引号的语法问题。试试这个,driver.find_element_by_xpath("//*[@id='twocols']/tbody/tr/td[2]/table/tbody/tr[6]/td[2]")