Python HTML raspado
-
22-09-2019 - |
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!
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?
leer análisis de HTML El Camino de Cthulhu https: //blog.codinghorror. com / análisis sintáctico-html-la-cthulhu vías /