Как получить имя файла.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 здесь.

Другие вопросы по тегам