gpt4 book ai didi

python - xPath:将表达式与实际源代码匹配困难

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:14 25 4
gpt4 key购买 nike

从此Deutsche Börse web page ,在表头Issuer下我想获取字符串内容'db X-trackers'在包含名称的单元格旁边。

使用我的 Web 浏览器,检查该表区域并获取代码,并将其粘贴到此 XML 树中,以便我可以测试我的 xPath。

<root>
<div class="row">
<div class="col-lg-12">
<h2>Issuer</h2>
</div>
</div>
<div class="table-responsive">
<table class="table">
<tbody>
<tr>
<td>Name</td>
<td class="text-right">db X-trackers</td>
</tr>
</tbody>
</table>
</div>
</root>

根据FreeFormatter.com ,下面的 xPath 成功检索了正确的元素 ( Text='db X-trackers' ):

my_xpath = "//h2['Issuer']/ancestor::div[@class='row']/following-sibling::div//td['Name']/following-sibling::td[1]/text()"

注意:它会转到 <h2>Issuer</h2>首先要确定正确的工作起点。

<小时/>

但是,当我使用 Selenium WebDriver 在实际网页上运行此命令时,None返回。

def get_sibling(driver, my_xpath):
try:
find_value = driver.find_element_by_xpath(my_xpath).text
except NoSuchElementException:
return None
else:
value = re.search(r"(.+)", find_value).group()
return value

我不认为函数本身有任何问题,因此要么 xPath 有问题,要么实际网页源代码中存在某些内容导致其失效。

在 Chrome 中研究实际的源代码时,它看起来比我在 Inspector 中看到的要困惑一些,这是我用来创建上面的小 XML 树的东西.

<div class="box">
<div class="row">
<div class="col-lg-12">
<h2>Issuer</h2>
</div>
</div>
<div class="table-responsive">
<table class="table">
<tbody>
<tr>
<td >
Name
</td>
<td class="text-right" >
db X-trackers
</td>
</tr>
<tr>
<td >
Product Family
</td>
<td class="text-right" >
db X-trackers
</td>
</tr>
<tr>
<td >
Homepage
</td>
<td class="text-right" >
<a target="_blank" href="http://www.etf.db.com">www.etf.db.com</a>
</td>
</tr>
</tbody>

</table>
</div>

上面的源代码是否有一些特殊之处,或者我的 xPath(或函数)是否错误?

最佳答案

我会使用followingfollowing-sibling轴:

//h2[. = "Issuer"]/following::table//td[. = "Name"]/following-sibling::td

首先我们找到h2元素,然后获取下面的table元素。在 table 元素中,我们查找带有 Name 文本的 td 元素,然后获取以下 td 同级元素。

关于python - xPath:将表达式与实际源代码匹配困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36201682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com