gpt4 book ai didi

python - XPath 父节点的类不应包含特定字符串

转载 作者:行者123 更新时间:2023-12-01 08:26:14 26 4
gpt4 key购买 nike

我正在尝试查找 class 名称为“phrase”且父节点的 class 名称不是“extras”的所有 div .

所以在Python中我正在使用

for phrase in entry.iterfind(".//div[@class='phrase'] and ./parent::div[@class!='extras']]"):

这样做。

但它给了我错误:

SyntaxError: prefix 'parent' not found in prefix map

我将上面的代码更改为

for phrase in entry.iterfind(".//div[@class='phrase'] and ./..[@class!='extras']]"):

这次的错误是

Traceback (most recent call last):File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/xml/etree/ElementPath.py", line 272, in iterfind
selector = _cache[cache_key] KeyError: (".//div[@class='phrase'] and ./..[@class!='extras']]", None)

部分XML结构如下:

<div class="phrases">
<div class="label">Phrases</div>
<div class="phrase">
……

<div class="phrasal verbs">
<div class="label">Phrases</div>
<div class="phrase">
……

<div class="extras">
<h2>test test</h2>
<div class="phrase">
……

我在 Mac OS 10.14 上使用 Python 3.7 和 xml.etree 库。

最佳答案

问题可能出在您当前的工具中,因为它可能不支持某些 XPath 语法。

您可以尝试lxml.html解析相同的 HTML 文档:

from lxml import html

source = """<div class="phrases">
<div class="label">Phrases</div>
<div class="phrase">this</div>
</div>

<div class="phrasal verbs">
<div class="label">Phrases</div>
<div class="phrase">this</div>
</div>

<div class="extras">
<h2>test test</h2>
<div class="phrase">not this</div>
</div>"""

dom = html.fromstring(source)
dom.xpath(".//div[@class='phrase' and ./parent::div[@class!='extras']]")

输出:

[<Element div at 0x7fb5218d5db8>, <Element div at 0x7fb521018728>] #  Two elements found

dom.xpath(".//div[@class='phrase' and ./parent::div[@class!='extras']]/text()")

输出:

['this', 'this']

关于python - XPath 父节点的类不应包含特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54233315/

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