BeautifulSoup объединяет слова в разных абзацах - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть файл EPUB, который мне нужно использовать.Я пытаюсь извлечь текст из файлов HTML, присутствующих в файле.Когда я запускаю soup.get_text() для извлеченного содержимого HTML, все параграфы объединяются, объединяя слова.

Я пытался заменить все теги <br> и </br> пустыми пробелами.Я также пытался изменить парсер с html.parser на html5lib.

with self._epub.open(html_file) as chapter:
    html_content = chapter.read().decode('utf-8')
    html_content = html_content.replace('</br>', ' ')
    html_content = html_content.replace('<br>', ' ')
    soup = bs4.BeautifulSoup(html_content, features="html5lib")
    clean_content = soup.get_text()

Ввод HTML:

<p> Paragraph1.Строка 1 </p>

<p> Строка 2 <p>

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

Пункт1. Строка 1 Строка 2

Фактический выход: Пункт1. Line1Line2

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете сделать это так. Как только вы получите HTML.

from bs4 import BeautifulSoup

html='''<p>Paragraph1. Line 1</p><p>Line 2<p>'''

    soup=BeautifulSoup(html,'html.parser')
    itemtext=''
    for item in soup.select('p'):
        itemtext+=item.text + ' '

    print(itemtext.strip())

Выход:

Paragraph1. Line 1 Line 2
...