Я пытаюсь преобразовать html в текст с помощью BeautifulSoup, но у меня проблема: некоторые слова разделены тегами без пробелов:
<span>word1</span><span>word2</space>
Итак, когда я извлекаю текст, у меня есть:
word1word2
Некоторые предложения также объединяются в одно предложение:
INTODUCTION There are many...
Есть ли простой способ принудительно разделить слова в тегах с помощью BeautifulSoup? Также можно исправить разделение предложений на некоторых тегах?
У меня есть несколько сложных HTML-файлов. Я преобразовываю их в текст вроде:
plain_texts = [BeautifulSoup(html, "html.parser").get_text() for html in htmls]
@Upasana Mittal BeautifulSoup (html, "html.parser"). Get_text ()
Вы можете использовать find_all()
:
from bs4 import BeautifulSoup
html_doc = """
<!DOCTYPE html><html lang = "en"><head><title>words</title></head><body><span>word1</span><span>word2</span></body></html>
"""
soup = BeautifulSoup(html_doc, 'lxml')
for span in soup.find_all('span'):
print(span.text)
Что печатает текст между тегами <span>
по отдельности:
word1
word2
Вы можете повозиться со своим супом, используя метод replace_with()
(документы здесь). Но многое зависит от структуры вашего HTML:
from bs4 import BeautifulSoup
data = '''
<html><body><span>word1</span><span>word2</space>
'''
soup = BeautifulSoup(data, 'lxml')
for span in soup.select('span'):
span.replace_with(span.text + ' ')
print(soup.text.strip())
Это печатает:
word1 word2
как вы получаете текст из тега html? с
.text
?