关于这个 page 我希望用于 Python 的 Selenium 获取“投资目标”的文本内容,不包括 <h3>
header 。我想使用 XPath。
节点看起来像这样:
<div class="carousel-content column fund-objective">
<h3 class="carousel-header">INVESTMENT OBJECTIVE</h3>
The Fund seeks to track the performance of an index composed of 25 of the largest Dutch companies listed on NYSE Euronext Amsterdam.
</div>
要检索文本,我正在使用:
string = driver.find_element_by_xpath(xpath).text
如果我将此 XPath 用于顶级节点:
xpath = '//div[@class="carousel-content column fund-objective"]'
它会工作,但它包含 <h3>
标题 INVESTMENT OBJECTIVE
— 我想排除。
但是,如果我尝试使用 /text()
为了解决实际的文本内容,Selenium for Python 似乎不允许我在使用 .text
时捕获它获取属性:
xpath = '//div[@class="carousel-content column fund-objective"]/text()'
请注意,在这个特定页面上似乎有多个节点具有此 XPath,因此我指定正确的节点如下:
xpath = '(//div[@class="carousel-content column fund-objective"]/text())[2]'
我对问题的解释是 .text
不允许我检索 XPath 子节点的文本内容 text()
.对于不正确的术语,我深表歉意。
最佳答案
/text()
将找到 return text node, which is not an element node .它没有 text
属性。
一种解决方案是定位这两个元素并删除不需要的文本
xpath = '//div[@class="carousel-content column fund-objective"]'
element = driver.find_element_by_xpath(xpath)
all_text = element .text
title_text = element.find_element_by_xpath('./*[@class="carousel-header"]').text
all_text.replace(title_text, '')
关于python - Selenium for Python : Get text() of node that is shared with another element, 通过 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49364186/