У меня есть файл XML (формально XBRL), в котором некоторые теги содержат экранированный HTML. Я хотел бы проанализировать документ XML, а затем извлечь HTML из этих тегов. Однако, похоже, что экранированные символы каким-то образом удалены BeautifulSoup. Поэтому, когда я пытаюсь получить mytag.text , все экранированные символы (например, <; </em>) больше не присутствуют. Например:
'<' in raw_text # True
'<' in str(BeautifulSoup(raw_text, 'xml')) # False
Я пытался создать простой пример для воспроизведения проблемы, но я не смог этого сделать, в том смысле, что простой пример, который я хотел привести, работает без любая проблема:
raw_text = '<xmltag><t><p>test</p><t><xmltag>'
soup = BeautifulSoup(raw_text, 'xml')
'<' in str(soup) # True
Таким образом, вы можете найти файл, который я анализирую здесь: https://drive.google.com/open?id=1lQz1Tfy8u7TBvatP8-QjlnzUi6rNUR79 Код, который я использую:
with open('test.xml', 'r') as fp:
raw_text = fp.read()
soup = BeautifulSoup(raw_text, 'xml')
mytag = soup.find('QuarterlyFinancialInformationTextBlock')
print(mytag.text[:100])
# prints: div div style="margin-left:0pt;margin-righ
# original file: <div> <div style=