【发布时间】:2017-01-08 20:00:28
【问题描述】:
我有以下 xpath:
<a class="btn btn-small downloadlink" rel="nofollow" data-
toggle="tooltip" data-format="ico" data-icon-id="1715795"
href="/icons/1715795/download/ico" data-original-title="Download this
icon in ICO format for use in Windows."><i class="download-icon"></i><b>
ICO</b></a>
<a class="btn btn-small downloadlink" rel="nofollow" data-
toggle="tooltip" data-format="icns" data-icon-id="1715795"
href="/icons/1715795/download/icns" data-original-title="Download this
icon in ICNS format for use in Apple OS X."><i class="download-icon"></i><b>
ICNS</b></a>
(来自这里:https://www.iconfinder.com/icons/1715795/earth_planet_space_icon#size=128)
使用 selenium,我想选择与包含的 xpath 对应的元素:
data-format="icns"
我尝试过类似的方法:
driver.find_element_by_xpath('//*[@data-format="icns"]')
但它给出了以下错误消息:
selenium.common.exceptions.NoSuchElementException: Message: no such
element: Unable to locate element: {"method":"xpath","selector":"//*
[@data-format=icns]"}
问:如何选择第二个元素?
我知道我可以从检查中复制 xpath,但这会给我留下一个非常不稳定的抓取脚本。由于页面布局的微小变化可能意味着我的 xpath 表达式将不再有效。
提前致谢!
【问题讨论】:
-
it doesn't work是什么意思? -
Selenium 找不到具有该 xpath 的元素
-
您是否尝试过使用 css 来查看是否是 xpath 的错误而不是时间问题?
a[data-format="icns"] -
这似乎不是时间问题。当我添加 time.sleep(4) 时它仍然不起作用。 driver.find_element_by_xpath('//*[@data-format="icns"]') 是正确的陈述吗?
-
你可以使用'driver.page_source'得到它
标签: python selenium xpath web-scraping