Я соскабливаю некоторые данные с веб-сайтов и столкнулся с проблемой, используя BeautifulSoup
(bs4
). Мне нужно получить текст некоторых элементов, разделенных чем угодно (запятая, пробел и т. Д.), Что позволяет мне разбить текст так, чтобы он появился.Текст после <br> исчезает после замены br-тегов
text
Атрибут bs4.element.Tag
дает текстовое содержание. Проблема в том, что я получаю текст конкатенированным, даже если между ними есть <br>
. У меня нет возможности дифференцировать, является ли OneTwo
одним словом/предложением или множественным.
Я использую find_all
, чтобы найти все <br>
теги, и я заменяю их запятой ,
, поэтому я могу разделить текст на нее. Однако, заменяя br
теги, кажется, удаляет текст, который следует за тегами br
.
Вот код, который воспроизводит проблему:
from bs4 import BeautifulSoup
soup = BeautifulSoup("""
<html>
<head>
</head>
<body>
<div>
One
<br>
Two
<br>
<br>
</div>
</body>
</html>
""".replace(' ', '').replace('\n', ''), "html.parser")
print soup.div.text
# Out: OneTwo
for br in soup.find_all('br'):
br.replace_with(',')
print soup.text.replace('\n', '')
# Out: One,
То, что я хочу, чтобы напечатать это One,Two
или One,Two,,
или что-то подобное вместо этого. Как заменить теги br
символом, не удаляя при этом другой текст?
Вы можете попробовать '' divText = [слово в слово в soup.div.split ('
'), если слово] '' –
Как уже говорилось, это по-прежнему не разделяет отдельные слова. Я не знаю, есть ли одно слово или нет. –
Отредактировано, пожалуйста, посмотрите еще раз. –