son - Eliminar etiquetas html de un texto utilizando Expresión regular en python
que son las expresiones regulares en python (2)
import re
patjunk = re.compile("<.*?>| |&",re.DOTALL|re.M)
url="http://www.yahoo.com"
def test(url,pat):
html = urllib2.urlopen(url).read()
return pat.sub("",html)
print test(url,patjunk)
Estoy tratando de ver un archivo html y eliminar todas las etiquetas para que solo quede el texto, pero estoy teniendo un problema con mi expresión regular. Esto es lo que tengo hasta ahora.
import urllib.request, re
def test(url):
html = str(urllib.request.urlopen(url).read())
print(re.findall(''<[/w///./w]*>'',html))
¡El html es una página simple con algunos enlaces y texto, pero mi expresión regular no se recuperará! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 Transitional // EN" y ''a href = "...." etiquetas. ¿Alguien puede explicar lo que necesito cambiar en mi expresión regular?
Use BeautifulSoup . Use lxml No use expresiones regulares para analizar HTML.
Editar 2010-01-29: Este sería un punto de partida razonable para lxml:
from lxml.html import fromstring
from lxml.html.clean import Cleaner
import requests
url = "https://.com/questions/2165943/removing-html-tags-from-a-text-using-regular-expression-in-python"
html = requests.get(url).text
doc = fromstring(html)
tags = [''h1'',''h2'',''h3'',''h4'',''h5'',''h6'',
''div'', ''span'',
''img'', ''area'', ''map'']
args = {''meta'':False, ''safe_attrs_only'':False, ''page_structure'':False,
''scripts'':True, ''style'':True, ''links'':True, ''remove_tags'':tags}
cleaner = Cleaner(**args)
path = ''/html/body''
body = doc.xpath(path)[0]
print cleaner.clean_html(body).text_content().encode(''ascii'', ''ignore'')
Desea el contenido, por lo que presumiblemente no desea ningún javascript o CSS. Además, presumiblemente solo desea el contenido del cuerpo y no el HTML de la cabeza. Lea en lxml.html.clean para ver qué puede quitar fácilmente. Más inteligente que las expresiones regulares, ¿no?
Además, ten cuidado con los problemas de codificación Unicode. Puede terminar fácilmente con HTML que no puede imprimir.
2012-11-08: se cambió del uso de urllib2 a las solicitudes . Solo usa solicitudes!