Как с помощью Beautiful soup найти все ссылки на файлы xlsx?

Рейтинг: 0Ответов: 1Опубликовано: 23.01.2023

Существует сайт из которого нужно скопировать все ссылки на файлы формата .xlsx

import requests
URL = 'https://rosstat.gov.ru/vpn_popul'
resp = requests.get(URL)
html = resp.text

from bs4 import BeautifulSoup
myhtml = BeautifulSoup(resp.content, 'html.parser')

myTags = myhtml.find_all('/.xlsx)
myTags

Питон выдает пустой список, то есть ничего не находит

Ответы

▲ 1Принят
myTags = myhtml.find_all('a', href=lambda x: 
x and x.endswith('.xlsx'))

или регулярка:

import re
myTags = myhtml.find_all('a', href=re.compile('.*\.xlsx$'))

Ещё вариант - библиотека lxml:

from lxml import html
myhtml = html.fromstring(resp.content)
myTags = myhtml.xpath('//a[ends-with(@href,".xlsx")]')

Или примени модуль re или regex:

import re
links = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+\.xlsx', html)