簡體   English   中英

錯誤地解析XML的漂亮湯

[英]Beautiful soup parsing XML incorrectly

<?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-xml解析器的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"選項制作湯。 沒有一個工作。

可能您需要嘗試這種方式,

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    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM