парсинг новых строк с BeautifulSoup - PullRequest
0 голосов
/ 22 мая 2019

При разборе html-документа с BeautifulSoup иногда html-код создает новые строки, например,

<div style="line-height:120%;text-align:left;font-size:10pt;"><font style="font-family:inherit;font-size:10pt;"><br></font></div><div style="line-height:120%;text-align:left;font-size:10pt;"><font style="font-family:inherit;font-size:10pt;font-weight:bold;">

, поэтому при извлечении текста я пропускаю новую строку:

page = open(fname)
try:
    soup = BeautifulSoup(page, 'html.parser')
except:
    sys.exit("cannot parse %s" % fname)
soup.prettify(formatter=lambda s: s.replace(u'\xa0', ' '))

for script in soup(["script", "style"]):
    script.extract()    # rip it out
if not soup.body:
    return
text = soup.body.get_text(separator = ' ')
lines = (clean_str(line) for line in text.splitlines())
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
text = '\n'.join(chunk for chunk in chunks if chunk)

Можно ли добавить корректировку, которая бы правильно разбивала текст на строки?

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