Я пытаюсь получить атрибуты href из таблицы в этой сети. У меня есть этот код, чтобы получить все ссылки, но я хочу отфильтровать, чтобы получить доступ только к href для «Automaticas», а не «Manuales».

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

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

# Response has UTF-8 charset header, and HTML body which is UTF-8 encoded
response = urllib2.urlopen(request)

# Parse with 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)

Приведенный выше src для «Automaticas» и «Manuales» отличается, но я не знаю, как их фильтровать.

enter image description here

0
aarribas12 27 Ноя 2021 в 15:27
Каков ожидаемый результат? Все значения href, содержащие descargardatos_estacion?
 – 
Wiktor Stribiżew
27 Ноя 2021 в 15:35
Атрибуты href, которые имеют src = '* .autoomatica.giff' выше
 – 
aarribas12
27 Ноя 2021 в 15:36

1 ответ

Лучший ответ

Ты можешь использовать

for img in soup.find_all(lambda x: x.name == 'img' and 'automatica.gif' in x['src']):
    print(img.next_sibling.next_sibling['href'])

Примечания:

  • soup.find_all(lambda x: x.name == 'img' and 'automatica.gif' in x['src']) - выбирает все узлы img, которые содержат automatica.gif в атрибуте src
  • img.next_sibling.next_sibling['href'] - получает значение href второго брата каждого найденного тега img.
1
Wiktor Stribiżew 27 Ноя 2021 в 15:44