Разбор HTML, вложенного в XML-файл (с использованием BeautifulSoup) - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь проанализировать некоторые данные в файле XML, который содержит HTML в своем поле description.

Например, данные выглядят следующим образом:

<xml>
    <description>
        <body>
           HTML I want
        </body>
    </description
    <description>
        <body>
           - more data I want -
        </body>
    </description>
</xml>

Пока что я пришел к следующему:

из bs4 import BeautifulSoup

soup = BeautifulSoup(myfile, 'html.parser')
descContent = soup.find_all('description')
for i in descContent:
    bodies = i.find_all('body')
    # This will return an object of type 'ResultSet'
    for n in bodies:
        print n
        # Nothing prints here.

Я не уверен, где я иду не так;когда я перечисляю записи в descContent, это показывает содержимое, которое я ищу;сложная часть заключается в получении вложенных записей для <body>.Спасибо за просмотр!

РЕДАКТИРОВАТЬ: После дальнейшей игры кажется, что BeautifulSoup не распознает, что в теге <description> есть HTML - он выглядит как просто текст, отсюда и проблема.Я думаю о сохранении результатов в виде файла HTML и повторной обработки этого, но не уверен, что это сработает, поскольку сохранение содержит буквенные строки для всех возвратов каретки и новых строк ...

1 Ответ

0 голосов
/ 20 мая 2018

используйте xml-анализатор в lxml
, вы можете установить lxml parser с
pip install lxml

with open("file.html") as fp:
    soup = BeautifulSoup(fp, 'xml')

for description in soup.find_all('description'):
    for body in description.find_all('body'):
        print body.text.replace('-', '').replace('\n', '').lstrip(' ')

, или вы можете просто набрать

print body.text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...