【问题标题】:Targeting Xpath attributes in Selenium在 Selenium 中定位 Xpath 属性
【发布时间】:2021-10-08 10:14:00
【问题描述】:
我正在使用 Selenium 抓取网页,但在定位某些属性时遇到了一些问题。
我要抓取的页面如下所示:
<div>
<span abc> content </span>
<span def> content2 </span>
<div>
我的目标是检索“span abc”标签中的文本,而不选择“span def”标签中包含的其他文本。
我尝试了多种方法并查看了许多不同的资源,但我无法找到正确的方法,因为我不想同时选择所有跨度并且我不想根据标签内的文本进行搜索。
【问题讨论】:
标签:
python
html
xml
selenium
web-scraping
【解决方案1】:
一种简单的方法是建立索引,因为您不想选择基于
因为我不想同时选择所有跨度,我
不想根据标签内的文字进行搜索。
如果 abc 是一个属性,请使用:
//div/span[@abc]
或
带索引:
(//div/span[@abc])[1]
【解决方案2】:
如果您只想从这两个跨度中提取第一个跨度,则可以使用 XPATH 轻松完成此操作。它看起来像这样:
span = driver.find_element_by_xpath("/html/body/div/span[1]").text
如果您想拉出每个跨度,但使用其中的每一个执行命令,您可以这样做:
span = len(driver.find_elements_by_xpath("/html/body/div/span"))
m = 1
while m <= 0:
span = driver.find_element_by_xpath("/html/body/div/span["+str(m)+"]")
print(span.text)
m = m + 1
【解决方案3】:
您可以使用像//span[1]/text() 这样的xpath 来获取<span> 标签内的文本
span = driver.find_element_by_xpath("/html/body/div/span[1]/text()")