Puede usar el módulo HTMLParser.
El código probablemente se vería algo como esto:
from HTMLParser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
# Only parse the 'anchor' tag.
if tag == "a":
# Check the list of defined attributes.
for name, value in attrs:
# If href is defined, print it.
if name == "href":
print name, "=", value
parser = MyHTMLParser()
parser.feed(your_html_string)
Nota: El módulo HTMLParser ha sido renombrado a html.parser en Python 3.0. La herramienta 2to3 adaptará automáticamente las importaciones al convertir sus fuentes a 3.0.
BeautifulSoup no puede cerrar automáticamente las etiquetas 'meta', por ejemplo.El modelo DOM no es válido y no hay garantía de que encuentre lo que está buscando. – Antonio
otro problema con bsoup es que el formato del enlace cambiará de su original. Entonces, si desea cambiar el enlace original para señalar otro recurso, en este momento todavía no tengo idea de cómo hacerlo con bsoup. ¿Cualquier sugerencia? – swdev
No todos los enlaces contienen 'http'. Por ejemplo, si codifica su sitio para eliminar el protocolo, los enlaces comenzarán con '//'. Esto significa simplemente usar cualquier protocolo con el que el sitio esté cargado (ya sea 'http:' o 'https:'). – reubano