Как получить имя файла .xls на веб-сайте с Python (запросы-HTML) - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь очистить файлы 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 Ответ

0 голосов
/ 24 января 2019

Вы можете получить к нему доступ через заголовки.

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. Вы можете просмотреть Спецификация размещения содержимого здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...