Загрузка файла python requests

Python How to Download a File from a URL

To download a file from a URL using Python, use the requests.get() method. For example, let’s download Instagram’s icon:

import requests URL = "https://instagram.com/favicon.ico" response = requests.get(URL) open("instagram.ico", "wb").write(response.content)

This is an example for someone who is looking for a quick answer. But if the above code lines don’t work or make sense, please keep on reading.

More Detailed Steps

To download a file from a URL using Python follow these three steps:

  1. Install requests module and import it to your project.
  2. Use requests.get() to download the data behind that URL.
  3. Write the file to a file in your system by calling open().

Let’s download Instagram’s icon using Python. The icon can be found behind this URL https://instagram.com/favicon.ico.

First, install the requests module by opening up a command line window and running:

Then, you can use it to download the icon behind the URL:

# 1. Import the requests library import requests URL = "https://instagram.com/favicon.ico" # 2. download the data behind the URL response = requests.get(URL) # 3. Open the response into a new file called instagram.ico open("instagram.ico", "wb").write(response.content)

As a result of running this piece of code, you see the Instagram icon appear in the same folder where your program file is.

Читайте также:  Bootstrap free css template

Other Ways to Download a File in Python

There are other modules that make downloading files possible in Python.

In addition to the requests library, the two commonly used ones are:

How to Download a File Using wget Module

Before you can download files using wget , you need to install the wget module.

Open up a command line window and run:

Then follow these two steps to download a file:

  1. Import the wget module into your project.
  2. Use wget.download() to download a file from a specific URL and save it on your machine.

As an example, let’s get the Instagram icon using wget :

import wget URL = "https://instagram.com/favicon.ico" response = wget.download(URL, "instagram.ico")

As a result of running the code, you can see an Instagram icon appear in the folder of your program.

How to Download a File Using urllib Module in Python

Before you can download files using urllib , you need to install the module. Open up a command line window and run:

Then follow these two steps to download a file:

  1. Import the urllib module into your project.
  2. Use urllib‘s request.urlretrieve() method to download a file from a specific URL and save it on your machine.

As an example, let’s get the Instagram icon using urllib :

from urllib import request URL = "https://instagram.com/favicon.ico" response = request.urlretrieve("https://instagram.com/favicon.ico", "instagram.ico")

As a result of running the code, you can see an Instagram icon appear in the folder of your program.

Источник

Как загружать файлы с помощью библиотеки запросов Python

Python поддерживается многими библиотеками, которые упрощают передачу данных по HTTP. Библиотека requests является одним из наиболее популярных пакетов Python, и широко используется в веб — парсинге. Он также популярен для взаимодействия с серверами! Библиотека позволяет легко загружать данные в популярном формате, таком как JSON, но также упрощает загрузку файлов.

В этом руководстве мы рассмотрим, как загружать файлы с помощью библиотеки Python requests . Статья начнется с описания библиотеки и сигнатуры функции post() . Далее мы расскажем, как загрузить один файл с помощью пакета requests . И последнее, но не менее важное: мы загружаем несколько файлов за один запрос.

Загрузка одного файла с помощью библиотеки запросов Python

В этом руководстве рассказывается, как отправлять файлы, нас не волнует, как они создаются. Чтобы продолжить, создайте три файла с именами my_file.txt , my_file_2.txt и my_file_3.txt .

Первое, что нам нужно сделать, это установить нашу библиотеку request в нашу рабочую область. Хотя в этом нет необходимости, рекомендуется устанавливать библиотеки в виртуальной среде:

Активируйте виртуальную среду, чтобы мы больше не влияли на глобальную установку Python:

Теперь давайте установим библиотеку requests с помощью pip :

Создайте новый файл с именем single_uploader.py , в котором будет храниться наш код. В этом файле давайте начнем с импорта библиотеки requests :

Теперь мы готовы загрузить файл! При загрузке файла нам нужно открыть файл и выполнить потоковую передачу содержимого. В конце концов, мы не можем загрузить файл, к которому у нас нет доступа. Сделаем это с помощью функции open() .

Функция open() принимает два параметра: путь к файлу и режим. Путь к файлу может быть абсолютным или относительным путем к тому месту, где выполняется сценарий. Если вы загружаете файл в тот же каталог, вы можете просто использовать имя файла.

Второй аргумент, режим, будет принимать значение «read binary», которое представлено rb . Этот аргумент сообщает компьютеру, что мы хотим открыть файл в режиме чтения, и мы хотим использовать данные файла в двоичном формате:

test_file = open("my_file.txt", "rb") 

Примечание: важно читать файл в двоичном режиме. Библиотека requests обычно определяет заголовок Content-Length , который представляет собой значение в байтах. Если файл не читается в байтовом режиме, библиотека может получить неверное значение для Content-Length , что приведет к ошибкам при отправке файла.

В этом руководстве мы будем делать запросы к бесплатному сервису httpbin. Этот API позволяет разработчикам тестировать свои HTTP-запросы. Давайте создадим переменную, которая хранит URL-адрес, по которому мы будем размещать наши файлы:

test_url = "http://httpbin.org/post" 

Теперь у нас есть все, чтобы сделать запрос. Мы будем использовать метод post() библиотеки requests для загрузки файла. Чтобы это работало, нам нужны два аргумента: URL-адрес сервера и свойство files . Также сохраним ответ в переменной, напишем следующий код:

test_response = requests.post(test_url, files = ) 

Свойство files принимает словарь. Ключ — это имя поля формы, которое принимает файл. Значение — это байты открытого файла, который вы хотите загрузить.

Обычно, чтобы проверить, был ли ваш метод post() успешным, мы проверяем HTTP код статуса ответа. Мы можем использовать свойство ok объекта ответа test_url . Если он True , мы распечатаем ответ HTTP-сервера, в этом случае он отобразит запрос:

if test_response.ok: print("Upload completed successfully!") print(test_response.text) else: print("Something went wrong!") 

Давай попробуем! В терминале выполните свой скрипт с помощью команды python :

Ваш результат будет примерно таким:

Upload completed successfully! < "args": <>, "data": "", "files": < "form_field_name": "This is my file\nI like my file\n" >, "form": <>, "headers": < "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "189", "Content-Type": "multipart/form-data; boundary=53bb41eb09d784cedc62d521121269f8", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.0", "X-Amzn-Trace-Id": "Root=1-5fc3c190-5dea2c7633a02bcf5e654c2b" >, "json": null, "origin": "102.5.105.200", "url": "http://httpbin.org/post" > 

В качестве проверки работоспособности вы можете убедиться, что значение form_field_name соответствует тому, что находится в вашем файле.

Загрузка нескольких файлов с помощью Python библиотеки requests

Загрузка нескольких файлов с помощью requests очень похожа на загрузку одного файла, с основным отличием в том, что мы используем списки. Создайте новый файл с именем multi_uploader.py и следующий код внутри:

import requests test_url = "http://httpbin.org/post" 

Теперь создайте переменную словарь под названием test_files с несколькими именами и файлами:

Как и раньше, ключи — это имена полей формы, а значения — файлы в байтах.

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

test_files = [("test_file_1", open("my_file.txt", "rb")), ("test_file_2", open("my_file_2.txt", "rb")), ("test_file_3", open("my_file_3.txt", "rb"))] 

Любой вариант работает, поэтому выберите тот, который вам больше нравится!

Когда список файлов будет готов, вы можете отправить запрос и проверить его ответ, как и раньше:

test_response = requests.post(test_url, files = test_files) if test_response.ok: print("Upload completed successfully!") print(test_response.text) else: print("Something went wrong!") 

Выполните этот скрипт с помощью команды:

Upload completed successfully! < "args": <>, "data": "", "files": < "test_file_1": "This is my file\nI like my file\n", "test_file_2": "All your base are belong to us\n", "test_file_3": "It's-a me, Mario!\n" >, "form": <>, "headers": < "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "470", "Content-Type": "multipart/form-data; boundary=4111c551fb8c61fd14af07bd5df5bb76", "Host": "httpbin.org", "User-Agent": "python-requests/2.25.0", "X-Amzn-Trace-Id": "Root=1-5fc3c744-30404a8b186cf91c7d239034" >, "json": null, "origin": "102.5.105.200", "url": "http://httpbin.org/post" > 

Заключение

В этой статье мы узнали, как загружать файлы в Python с помощью библиотеки requests . Если это один файл или несколько файлов, требуется лишь несколько настроек метода post() . Мы также проверили наш ответ, чтобы убедиться, что загрузка прошла успешно.

Источник:

Источник

Оцените статью