【发布时间】:2018-08-06 00:47:07
【问题描述】:
我想用python3和lxml提供的HTML解析器提取一些HTML元素。
考虑一下这个 HTML:
<!DOCTYPE html>
<html>
<body>
<span class="foo">
<span class="bar">bar</span>
foo
</span>
</body>
</html>
考虑这个程序:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from lxml import html
tree = html.fromstring('html from above')
bars = tree.xpath("//span[@class='bar']")
print(bars)
print(html.tostring(bars[0], encoding="unicode"))
在浏览器中,查询选择器“span.bar”仅选择 span 元素。这就是我所渴望的。但是,上面的程序会产生:
[<Element span at 0x7f5dd89a4048>]
<span class="bar">bar</span>foo
看起来我的 XPath 实际上并不像查询选择器一样,并且在 span 元素旁边拾取同级文本节点。如何调整 XPath 以仅选择 bar 元素,而不选择文本“foo”?
【问题讨论】:
标签: python-3.x xpath lxml.html