我需要在一些 HTML 字符串模板中<div>找到id="XXX":
from lxml import html
template = '''
Text node 1
<div id="XXX">XXX content</div>
Text node 2
'''
tree = html.fromstring(template)
element = tree.get_element_by_id('XXX')
result = html.tostring(element).decode('utf-8')
print(result)
>>> <div id="XXX">XXX content</div>
>>> Text node 2
由于一些奇怪的原因,它选择<div>和下一步Text node 1
<div id="XXX">XXX content</div>如果我用另一个包裹<div>:
Text node 1
<div>
<div id="XXX">XXX content</div>
</div>
Text node 2
一切都更好,它打印匹配<div id="XXX">和一个空行(解码\n):
>>> print(result)
<div id="XXX">XXX content</div>
\n
如果我在<div>之后添加一些<div id="XXX">:
Text node 1
<div id="XXX">XXX content</div>
<div></div>
Text node 2
一切也更好,它打印匹配<div id="XXX">和一个空行(解码\n):
>>> print(result)
<div id="XXX">XXX content</div>
\n
以前Text node 1从未受到影响 - 至少这很好)
那么,可以指定一些东西不选择下一个文本节点吗?这会很棒,如果\n也不会匹配,但我可以忍受
请告诉我,如果该问题与 XPath 无关lxml,而是与 XPath相关
PSBeautifulSoup没有这个问题,即使使用与lxml解析器相同的模块,它甚至不匹配next\n
版本:
>>> python
Python 3.7.3
>>> pip show lxml
Version: 4.3.4
翻翻过去那场雪
相关分类