【发布时间】:2018-08-28 11:16:21
【问题描述】:
我正在努力理解 python 的 lxml 库的部分内容。
获取以下html文件,sample.html。
<div class="team">
<ul class="team-members">
<li class="team-member">
<span class="team-member-name">John Doe</span>
<span class="team-member-age">30</span>
</li>
<li class="team-member">
<span class="team-member-name">Jane Doe</span>
<span class="team-member-age">32</span>
</li>
</ul>
</div>
<div class="team">
<ul class="team-members">
<li class="team-member">
<span class="team-member-name">Joe Smith</span>
<span class="team-member-age">28</span>
</li>
<li class="team-member">
<span class="team-member-name">Jill Smith</span>
<span class="team-member-age">41</span>
</li>
</ul>
</div>
我可以将此 html 导入到 lxml 树中:
from lxml import html
file = open("sample.html",'r')
sample = file.read()
tree = html.fromstring(sample)
然后我可以使用 xpath 来获取 html 中所有文本原子的列表,如下所示:
tree.xpath('//text()')
当我通过如下的 xpath 时出现问题:
elements = tree.xpath("//li")
打印元素产量
[<Element li at 0x48be638>,
<Element li at 0x48be9f8>,
<Element li at 0x48beb88>,
<Element li at 0x48bec78>]
我可以将 xpaths 传递给其中的每一个,但每一个的行为都与原始树一样!比如,
elements[0].xpath('//text()')
似乎返回与上面完全相同的列表。不过,
elements[0].tag
返回“li”,因此每个元素似乎都有一些关于它来自哪里的记录。
问题: 理想情况下,我希望能够单独访问 html 文档中的每个列表成员,并将 xpath 传递给每个成员。这样的事情可能吗?每个“元素 li”实际上包含什么信息?
【问题讨论】: