漂亮的汤解析XML不正确

2024-10-04 03:18:15 发布

您现在位置:Python中文网/ 问答频道 /正文

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pdf2xml SYSTEM "pdf2xml.dtd">
<page number="1" position="absolute" top="0" left="0" height="1188" width="918">
<text top="301" left="136" width="223" height="17" font="4"><b>– Jul-18            ABC  </b></text>
<text top="495" left="136" width="258" height="17" font="4"><b>– Aug-16</b>                     <b>XYZ                  </b></text>
</page>

使用xml/lxml/lxml解析器的Beautiful Soup无法正确解析第二个<text>元素。它移除Aug-16XYZ之间的空间。它解析为

<text font="4" height="17" left="136" top="495" width="258"><b>– Aug-16</b> <b>XYZ                  </b></text>

这是不对的。我也试过用from_encoding="utf-8"选项做汤。没有一个有效。你知道吗


Tags: textversiontoppagexmlwidthleftlxml
1条回答
网友
1楼 · 发布于 2024-10-04 03:18:15

也许你需要试试这个方法

from bs4 import BeautifulSoup
text = """
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pdf2xml SYSTEM "pdf2xml.dtd">
<page number="1" position="absolute" top="0" left="0" height="1188" width="918">
<text top="301" left="136" width="223" height="17" font="4"><b>– Jul-18            ABC  </b></text>
<text top="495" left="136" width="258" height="17" font="4"><b>– Aug-16</b>                     <b>XYZ                  </b></text>
</page>
"""

soup = BeautifulSoup(text, 'html.parser')
for i in soup.find_all('text'):
    print(i.get_text(separator=u' ', strip=False))

#Output as : – Jul-18            ABC  
#             – Aug-16   XYZ    

相关问题 更多 >