es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar solo ciertos elementos en una tabla con Beautiful Soup.

Estoy intentando obtener los atributos href de una tabla en esta página web. Tengo este código para obtener todos los enlaces, pero quiero filtrar para acceder solo al href para ‘Automaticas’ no para ‘Manuales’

# Obtener URL
url = 'http://meteo.navarra.es/estaciones/descargardatos.cfm'

request = urllib2.Request(url)
request.add_header('Accept-Encoding', 'utf-8')

# La respuesta tiene una cabecera UTF-8 y un cuerpo HTML codificado en UTF-8
response = urllib2.urlopen(request)

# Parsear con BeautifulSoup
soup = BeautifulSoup(response,'html.parser')

for a in soup.find_all('a',{'href': re.compile(r'descargardatos_estacion.*')}):
    estacion = 'http://meteo.navarra.es/estaciones/' + a.attrs.get('href')
    print(estacion)
    # descarga_csvs(estacion)

Los atributos href de ‘Automaticas’ y ‘Manuales’ son diferentes pero no sé cómo filtrarlos.

imagen

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para filtrar solo los atributos href de ‘Automaticas’, puede agregar una condición al bucle for que verifique si la cadena ‘Automaticas’ está en el atributo href:

    for a in soup.find_all('a', {'href': re.compile(r'descargardatos_estacion.*')}):
        if 'Automaticas' in a['href']:
            estacion = 'http://meteo.navarra.es/estaciones/' + a['href']
            print(estacion)
            # descarga_csvs(estacion)
    

    Esto debería imprimir solo los enlaces href que contengan la cadena ‘Automaticas’.

Comments are closed.