Как очистить файл от HTML-тегов и вывести только текст?
Надо очистить файл от HTML-тегов и вывести на экран «чистый» текст.
Могу вывести все HTML коды из текста, но не знаю как их удалить из текста и вывести чистый текст.
import re
import urllib.request
url = "http://dfedorov.spb.ru/python/files/p.html"
with urllib.request.urlopen(url) as webpage, open('mail.txt', 'r') as fw:
for line in webpage:
line = line.strip()
line = line.decode('utf-8')
urls = ''.join(re.findall(r'<[^>]+>', line))
print(urls)
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
data = urllib.request.urlopen(url).read().decode("utf-8")
res = re.sub(r"<[^>]+>", "", data, flags=re.S)
print(res)
вывод:
Абзацы
Абзац - отрезок письменной речи, состоящий из нескольких предложений.
Выделение фразы в особый абзац усиливает падающий на него смысловой акцент.
Для выделения абзаца его, помимо новой строки, печатают со строки красной, то есть отделяют вертикальным отступом от соседних абзацев и/или делают абзацный отступ.
PS я исходил из того, что это задачка по регулярным выражениям. Если же это реальная задача по парсингу/обработке HTML, тогда стоит воспользоваться специально разработанным для этого инструментом - BeautifulSoup:
import requests
from bs4 import BeautifulSoup
r = requests.get(url)
soup = BeautifulSoup(r.text)
text = soup.get_text()
Автор решения: gil9red
→ Ссылка
Попробуйте модуль bleach:
# pip install bleach
import bleach
html = '<p><span>is not <b><span>allowed</span></b></span></p>'
print(bleach.clean(html, tags=[], strip=True))
# is not allowed