Как получить имя файла.xls на веб-сайте с Python (запросы-HTML)
Я пытаюсь очистить файлы Excel от финского агентства по ценам на лекарства
Я использую запрос-HTML, чтобы найти ссылки на файлы Excel:
from requests_html import HTMLSession
import urllib.request
url = 'http://www.hila.fi/fi/hakeminen_ja_ilmoitukset/viitehintajarjestelma/ryhmat_ja_hinnat/viitehintapaatokset2009'
session = HTMLSession()
r = session.get(url)
sel = 'a[href*=".xls"]'
reference_datas = r.html.find(sel)
for reference_data in reference_datas:
url = reference_data.absolute_links.pop()
response = urllib.request.urlopen(url)
with open('test.xls', 'wb') as f:
f.write(response.read())
Это прекрасно работает для содержимого файлов Excel, но выбранные элементы не имеют информации об именах файлов. Имена файлов содержат информацию о периоде, когда цены в файлах применяются. Например ссылка http://www.hila.fi/c/document_library/get_file?folderId=792534&name=DLFE-4531.xls
получает файл Viitehintaluettelo Q4_2009_paivitetty.xls
,
Как я могу получить это имя файла в виде строки, чтобы я мог извлечь информацию о времени Q4_2009
от него?
1 ответ
Решение
Вы можете получить к нему доступ через заголовки.
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('http://www.hila.fi/c/document_library/get_file?folderId=792534&name=DLFE-4531.xls')
content_disposition = r.headers.get('Content-Disposition')
print(content_disposition)
# 'attachment; filename="Viitehintaluettelo Q4_2009_paivitetty.xls"'
Просто разобрать filename
от content_disposition
, Вы можете ознакомиться со спецификацией Content-Disposition здесь.