Pregunta

En realidad no es el raspado, sólo estoy tratando de encontrar las direcciones URL en una página web en la que la clase tiene un valor específico. Por ejemplo:

<a class="myClass" href="/url/7df028f508c4685ddf65987a0bd6f22e">

Quiero obtener el valor href. ¿Alguna idea sobre cómo hacer esto? Tal vez regex? Podría publicar un código de ejemplo? Supongo html raspando libs, tales como BeautifulSoup, son un poco excesivo sólo para esto ...

Muchísimas gracias!

¿Fue útil?

Solución

Regex es Normalmente una mala idea, trate de usar BeautifulSoup

Ejemplo rápido:

html = #get html
soup = BeautifulSoup(html)
links = soup.findAll('a', attrs={'class': 'myclass'})
for link in links:
    #process link

Otros consejos

Aargh, no expresiones regulares de análisis de HTML !

Por suerte en Python tenemos BeautifulSoup o lxml para hacer ese trabajo por nosotros.

Regex sería una mala elección. HTML no es un lenguaje regular. ¿Qué hay de Hermosa sopa ?

Regex no debe ser utilizado para analizar HTML. Ver la primera respuesta a esta pregunta una explicación :)

1 para BeautifulSoup.

Si su tarea es así de sencillo, simplemente el uso de manipulación de cadenas (sin expresiones regulares, incluso)

f=open("htmlfile")
for line in f:
    if "<a class" in line and "myClass" in line and "href" in line:
        s = line [ line.index("href") + len('href="') : ]
        print s[:s.index('">')]
f.close()

HTML analizadores no es una necesidad para tales casos.

Lo que pasa es que sé la estructura de la página HTML, y sólo quiero encontrar ese tipo específico de enlaces (donde class = "miclase"). BeautifulSoup de todos modos?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top