gpt4 book ai didi

python - findall 和 xpath 问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:48 25 4
gpt4 key购买 nike

我有一个文本文件,其中包含一些名为“html.txt”的 HTML 代码,如下所示:

<tr>
<td class="name"><a href="/player/DAVID:RD" class=""><span>David Kwan</span> (DAVID)</a></td>
<td class="teamid" style="">DAVID:RD</td>
<td class="">District Player</td>
<td class="">Red-Dragon Factory</td>
</tr>

引用我从lxml网站上阅读的教程,我尝试使用etreefindall()方法从 HTML 代码中提取表数据,但不知何故我无法以字符串格式打印出来,我得到的结果是 <Element td at 0x267c1c0> .
我了解使用 findall 时,集合或列表将返回类似的结果方法,但即使我使用索引 0 它也没有帮助。另外,通过反复试验,我尝试使用 str支持 xpath 的函数给力findall以字符串格式返回也没有帮助。

有人可以建议我如何纠正这个问题吗?

from lxml import etree

page = open("C:/Python27/project/lxml_project/html.txt").read()
x = etree.HTML(page)
element = (x.findall('.//td[@class="teamid"]'))
print(element)

我的第二个问题是我是否使用 xpath而不是findall方法,会是更好的解决方案吗?以前,当我尝试 xpath 时,它总是返回第一个搜索元素,即使我有多个表数据 <td>整个html页面中的标签。是否可以实现xpath使用Python LXML 库递归?

最佳答案

使用Element.text attribute检索元素的文本内容:

elements = x.findall('.//td[@class="teamid"]')
print([elem.text for elem in elements])

.findall() 返回一个列表;您可以使用 .find() 只检索第一个匹配项(如果没有匹配元素,则使用 None)。

关于python - findall 和 xpath 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968866/

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