BeautifulSoup Извлечь текст, который не имеет тега - PullRequest
0 голосов
/ 11 июня 2018

Я проанализировал текст HTML, как показано ниже, и пытаюсь извлечь текст в том же порядке.

<code><b>
 <i>
  Data
 </i>
 Data Summary
</b>
<br/>
Data Description
<br/>
<br/>
<pre>Data paragraph which contains huge string<br/>
 Данные 2  Данные 2 Сводка Описание данных 2
Data 2 paragraph which contains huge string<br/>

Я могу извлечь теги между i и b, используя soup.findAll(['b', 'i']), но пытаюсь получить текст без тегов после каждого тега b.Я пробовал с next_sibling, который даже не работает с этим.Любая помощь будет оценена.

Ожидаемый результат:

Data Summary : Data Description : Data paragraph which contains huge string newline Data 2 : Data 2 Summary : Data 2 Description : Data 2 paragraph which contains huge string

1 Ответ

0 голосов
/ 15 июня 2018

Вы можете перебрать все элементы, содержащие текст, следующим образом:

<code>from bs4 import BeautifulSoup

html = """
<b><i>Data</i>Data Summary</b><br/>
Data Description<br/>
<br/>
<pre>Data paragraph which contains huge string<br/>
 Данные 2  Сводка данных 2 Описание данных 2
Data 2 paragraph which contains huge string<br/>
"" "soup = BeautifulSoup (html," html.parser ") text_items = [t.strip () для t в soup.find_all (text = True), если len (t.strip ())] print (text_items)

Это также удаляет любые пробелы и сохраняет только те элементы, которые приводят к непустым строкам. Это будет отображать следующий список:

['Data', 'Data Summary', 'Data Description', 'Data paragraph which contains huge string', 'Data 2', 'Data 2 Summary', 'Data 2 Description', 'Data 2 paragraph which contains huge string']    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...