有一段代码。对于类似的文件,它工作得很好,但在一个特定的文件中,它没有正确地将 xml 拆分为标签。
from bs4 import BeautifulSoup
def parse_bd():
styles = []
path = 'C:\\Users\\dfusd\\PycharmProjects\\dance_parse\\DB_demo\\'
files = ['Group.xml', 'Teacher.xml', 'Style.xml']
file = open(path + files[1], encoding='utf8')
bs = BeautifulSoup(file, features="lxml")
i = 0
file = open(path+files[2], encoding='utf8')
bs = BeautifulSoup(file, features='lxml')
for item in bs.find_all('item'):
for ID, name, description, foto in zip(item.find_all('id'), item.find_all('name'), item.find_all('description'),
item.find_all('id_foto')):
print(ID)
styles[i].update({'id': ID.string,
'description': description.string,
'name': name.string,
'foto': foto.string})
i += 1
return styles
print(parse_bd())
我认为问题在于,在这段 xml 中,我在描述中有一个换行符
<?xml version="1.0" encoding="utf-8"?>
<Style>
<Item>
<ID>66a0f87a-6b5c-4363-91c6-05098af05b43</ID>
<Name>Bachata</Name>
<Description>Бачата — невероятно красивый танец. Его гипнотизирующие ритмы наполнены чувственностью и романтикой, а движения танцоров грациозны и пластичны. Этот танец напоминает первый поцелуй, такой же нежный, и одновременно страстный и многообещающий…
В Латинской Америке бачата - танец очень популярный, его танцуют везде, на всех праздниках и танцплощадках. Звуки музыки передают акустическая, карибская гитара и бонго. Бачата — это яркий характер музыки и движений.
Бачата - танец парный и танцевать его — непередаваемое удовольствие. В этом танце нужно слиться с музыкой и «почувствовать» партнера, стать с ним единым целым.
Уроки бачаты - прекрасный способ сделать походку и движения красивыми, а фигуру — подтянутой и стройной. Обучение бачате доступно человеку любого возраста, веса и телосложения. Посещая уроки бачаты вы улучшаете координацию движений и получаете удовольствие от романтичного танца.
Танец бачата остро чувственный, интимный, раскрепощенный! Женщинам он помогает обрести женственность, грациозность, пластичность, а мужчинам – их исконное предназначение лидера, играющего ведущую роль в паре.</Description>
<ID_Foto>97d1bd67-c5b2-478e-986a-618da2861e46</ID_Foto>
</Item>
如何使 BS 与这些字符一起正常工作?谷歌搜索没有带来任何结果。
问题不会是
description
.问题将出在
Style.xml
. 此外,您使用的不是xml-parser 而是html-parser:是的,
"lxml"
不是 xml 解析器。利用或者干脆
笔记:
下面是一个无效 XML 文档的示例(参见 , 标签
<tag1>
)</tag2>
:申请后
"lxml"
:在应用
"lxml-xml"
or之后"xml"
: