gpt4 book ai didi

python - 如何选择所有子文本但不包括 Selenium 的 XPath 选择器中的标签?

转载 作者:行者123 更新时间:2023-11-28 22:46:21 24 4
gpt4 key购买 nike

我有这个 html:

<div id="content">
<h1>Title 1</h1><br><br>

<h2>Sub-Title 1</h2>
<br><br>
Description 1.<br><br>Description 2.
<br><br>

<h2>Sub-Title 2</h2>
<br><br>
Description 1<br>Description 2<br>
<br><br>

<div class="infobox">
<font style="color:#000000"><b>Information Title</b></font>
<br><br>Long Information Text
</div>
</div>

我想获取 <div id="content"> 中的所有文本在 Selenium 的 find_element_by_xpath 函数中但不包括 <div class="infobox">的内容,所以预期的结果是这样的:

Title 1


Sub-Title 1


Descripton 1.

Descripton 2.


Sub-Title 2


Descripton 1.
Descripton 2.

我可以在在线 XPath 测试器中使用这段代码来获取它:

//div[@id="content"]/descendant::text()[not(ancestor::div/@class="infobox")]

但是如果我将代码传递给 selenium 的 find_element_by_xpath,我将得到 selenium.common.exceptions.InvalidSelectorException .

result = driver.find_element_by_xpath('//div[@id="content"]/descendant::text()[not(ancestor::div/@class="infobox")]')

最佳答案

内部使用的xpath find_element_by_xpath()必须指向一个元素,而不是文本节点,也不是属性。

这里最简单的方法是找到父标签,找到要排除文本的子标签,然后从父文本中删除子标签:

parent = driver.find_element_by_id('content')
child = parent.find_element_by_class_name('infobox')
print parent.text.replace(child.text, '')

关于python - 如何选择所有子文本但不包括 Selenium 的 XPath 选择器中的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27591547/

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