Python3, загрузить файл с URL-адреса нажатием кнопки

Мне нужно скачать файл по такой ссылке https://freemidi.org/getter-13560

Но я не могу использовать библиотеку urllib.request или requests, потому что она загружает html, а не midi. Есть ли какое-нибудь решение? А также вот ссылка с самой кнопкой ссылка


person Semyon Kirekov    schedule 13.01.2018    source источник


Ответы (1)


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

import requests

headers = {
            "Host": "freemidi.org",
            "Connection": "keep-alive",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
            "Accept-Encoding": "gzip, deflate, br",
            "Accept-Language": "en-US,en;q=0.9",
           }

session = requests.Session()

#the website sets the cookies first
req1 = session.get("https://freemidi.org/getter-13560", headers = headers)

#Request again to download
req2 = session.get("https://freemidi.org/getter-13560", headers = headers)
print(len(req2.text))     # This is the size of the mdi file

with open("testFile.mid", "wb") as saveMidi:
    saveMidi.write(req2.content)
person Stack    schedule 13.01.2018
comment
Благодарю вас! Наконец-то это работает. Но нужны были некоторые изменения. Введите req2.content вместо req2.text, выберите режим 'wb' и '.mid', а не '.midi*' - person Semyon Kirekov; 13.01.2018