gpt4 book ai didi

python - Beautiful Soup find_all() 返回奇数标签而不是结果

转载 作者:太空宇宙 更新时间:2023-11-04 05:58:54 24 4
gpt4 key购买 nike

我正在使用 Beautiful Soup 从如下所示的 XML 文件中获取一些信息:

<name>Ted</name>
<link>example.com/rss</link>
<link>example2.com/rss</link>

这是我目前正尝试读入的整个 XML 文件,用于测试目的。

当我尝试使用 find_all('link') 时,它会返回一个包含以下内容的列表:

[ <link/>, <link/> ]

我似乎无法在任何文档中找到任何此类内容的提及,任何人都可以告诉我我做错了什么?

编辑:包括解析代码:

for file in glob.glob("*.xml"):
if file.endswith(".xml"):
f = open(file, 'r');

#Reads in all information about the bot from the file
botFile = f.read()
soup = BeautifulSoup(botFile)

name = soup.find('name').get_text()

links = soup.find_all('link')
for link in links:
print link

最佳答案

要使用 BeautifulSoup 解析 XML,您需要使用 XML 解析器;确保你有 lxml installed并告诉 BeautifulSoup 使用 XML:

soup = BeautifulSoup(document, 'xml')

否则元素被解析为HTML <link> tags ,根据定义为空。

演示:

>>> from bs4 import BeautifulSoup
>>> sample = '''\
... <root>
... <name>Ted</name>
... <link>example.com/rss</link>
... <link>example2.com/rss</link>
... </root>
... '''
>>> soup = BeautifulSoup(sample)
>>> soup.find_all('link')
[<link/>, <link/>]
>>> soup = BeautifulSoup(sample, 'xml')
>>> soup.find_all('link')
[<link>example.com/rss</link>, <link>example2.com/rss</link>]

注意没有第二个参数'xml'结果是空的标记对象,但带有 'xml'设置标签内容在那里。

参见 Installing a parserParsing XML在文档中。

关于python - Beautiful Soup find_all() 返回奇数标签而不是结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26202728/

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