【发布时间】:2022-01-16 22:06:57
【问题描述】:
所以,我有一个非常混乱的 xml 数据,需要对其进行解析,以便将其插入数据库。
这是一个 XML 示例:
<GenericItem html='ID: AAA1<br/>Age: 12<br/>Name: Baryk <'>
Employee:
</GenericItem>
如何拆分html标签的值,以便获取姓名、年龄和ID?
【问题讨论】:
所以,我有一个非常混乱的 xml 数据,需要对其进行解析,以便将其插入数据库。
这是一个 XML 示例:
<GenericItem html='ID: AAA1<br/>Age: 12<br/>Name: Baryk <'>
Employee:
</GenericItem>
如何拆分html标签的值,以便获取姓名、年龄和ID?
【问题讨论】:
试试这个!
您只需要进行一些字符串操作/清理即可获得您想要的数据。我刚刚打印出来了,如果你愿意,你可以把它保存在一个变量中。
from bs4 import BeautifulSoup
source = "<GenericItem html='ID: AAA1<br/>Age: 12<br/>Name: Baryk <'>Employee:</GenericItem>"
soup = BeautifulSoup(source, 'lxml')
for each in soup.find("genericitem").get("html").split("<br/>"):
print(each.split(":")[1].replace("<", "").strip())
【讨论】:
find_all,它将返回标签列表,因此您必须对其进行迭代
我已将您的数据设为html
from bs4 import BeautifulSoup
html="""<GenericItem html='ID: AAA1<br/>Age: 12<br/>Name: Baryk <'>
Employee:
</GenericItem>
"""
soup=BeautifulSoup(html,"lxml")
我找到了genericitem标签并根据<br/>和内部循环拆分使用:将值作为键值对添加到data_dict
dict_data={}
tag=soup.find("genericitem")['html'].split("<br/>")
for data in tag:
info=data.split(":")
value=info[0]
data=info[1].strip()
dict_data[value]=data
输出:
{'ID': 'AAA1', 'Age': '12', 'Name': 'Baryk <'}
【讨论】:
您可以使用 BeautifulSoup 和 'lxml' 进行解析和重新解析
from bs4 import BeautifulSoup as bs
to_parse = '''<GenericItem html='ID: AAA1<br/>Age: 12<br/>Name: Baryk <'>
Employee:
</GenericItem>'''
soup = bs(to_parse, 'lxml')
print([i.split(': ')[-1] for i in bs(soup.select_one('genericitem')['html'], 'lxml').select_one('p').stripped_strings])
【讨论】: