Как загружать файлы с URL-адреса в Python
Загрузка файлов из сети является одной из наиболее распространенных ежедневных задач, выполняемых в Интернете. Это важно в связи с тем, что многие успешные программы позволяют своим пользователям загружать файлы из Интернета.
В сегодняшней статье мы рассмотрим, как использовать библиотеки requests и tqdm для создания загрузчика файлов с индикатором выполнения с использованием Python.
Начнем с создания изолированной среды, куда установим все необходимое через командную строку:
# windows
# для python 3 и выше
>>>python -m venv my_folder
# активируем ее
>>>cd my_folder/Scripts
>>>activate
# вывод
>>> (my_folder) C:\Users\УЗИ\Desktop\my_folder\Scripts>
# среда активирована, теперь установим библиотеки requests и tqdm
>>>pip3 install requests tqdm
Модуль tqdm здесь используется просто для создания красивого индикатора в консоли.
Откройте новый файл Python и импортируйте:
from tqdm import tqdm
import requests
import cgi
import sys
# URL адрес будет передаваться через командную строку
Далее, для загрузки контента с интернета мы используем метод requests.get(). Но есть одна проблема, так как данный метод загружает информацию целиком, что может перегрузить память. К счастью для нас, у метода get есть параметр stream, которому можно присвоить True. Что позволит загружать информацию частями.
# установим значение в 1024 байт за один раз
buffer_size = 1024
# загрузка тела ответа по кускам
response = requests.get(url, stream=True)
Теперь не только заголовок ответа загружен и соединение осталось открытым, также есть возможность управлять рабочим процессом с помощью метода iter_content(). Но перед тем как продемонстрировать указанное в действии, мы должны извлечь название файла и его общий размер.
# получим размер файла
file_size = int(response.headers.get("Content-Length", 0))
# получим имя файла
default_filename = url.split("/")[-1]
# получим заголовок content disposition, обозначающий что файл #предназначен для скачивания
content_disposition = response.headers.get("Content-Disposition")
# если данный элемент существует
if content_disposition:
# разбираем заголовок с помощью cgi
value, params = cgi.parse_header(content_disposition)
# извлекаем имя файла из content disposition
filename = params.get("filename", default_filename)
else:
# если же content dispotion не доступен то используем имя из url
filename = default_filename
Мы получаем размер файла в байтах из заголовка ответа Content-Length, мы также получаем имя файла в заголовке Content-Disposition, но нам нужно проанализировать его с помощью функции cgi.parse_header().
Давайте скачаем файл прямо сейчас:
# индикатор выполнения отражает количество загруженных байт
progress = tqdm(response.iter_content(buffer_size), f"Загрузка
with open(filename, "wb") as f:
for data in progress.iterable:
# запись данных прочитанных из файла
f.write(data)
# update the progress bar manually
progress.update(len(data))
>>>python download_indicator.py https://download.virtualbox.org/virtualbox/6.1.18/VirtualBox-6.1.18-142142-Win.exe
# Расширения файлов должны оканчиваться на .exe, .pdf, etc.
В результате в каталоге с запущенным скриптом будет установлен VirtualBox. Таким образом, с помощью Python и библиотек requests и tqdm мы установили виртуальную машину.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Доступ к Интернету в Python с использованием Urllib.Request и urlopen()
С помощью Python вы также можете получать и получать данные из Интернета, такие как XML, HTML, JSON и т. д. Вы также можете использовать Python для непосредственной работы с этими данными. В этом руководстве мы рассмотрим, как можно получать данные из Интернета. Например, здесь мы использовали URL-адрес видео guru99, и мы собираемся получить доступ к этому URL-адресу видео с помощью Python, а также вывести HTML-файл этого URL-адреса.
В этом руководстве мы рассмотрим:
Как открыть URL с помощью Urllib
Как в Python прочитать HTML-файл для URL-адреса
Освойте наиболее востребованную IT профессию
На Python пишут веб-приложения и нейросети, проводят научные вычисления и автоматизируют процессы. Язык просто выучить, даже если вы никогда не программировали. На курсе вы создадите Telegram-бота, полноценный магазин и аналог популярной соцсети для портфолио, а Центр карьеры поможет найти работу Python-разработчиком.
Как открыть URL с помощью Urllib
Перед тем, как запустить код для подключения к интернет-данным, нам импортировать модуль библиотеки URL или «urllib».
Определяем основную функцию
Объявляем переменную webUrl
Затем вызываем функцию urlopen в библиотеке urllib
URL, который мы открываем — это руководство guru99 по YouTube
Далее мы собираемся вывести код результата
Код результата получается путем вызова функции getcode для созданной нами переменной webUrl
Мы собираемся преобразовать это в строку, чтобы ее можно было объединить со строкой «код результата»
Это будет обычный HTTP-код «200», указывающий, что http-запрос успешно обработан
Как в Python получить URL-адрес HTML-файла
Вы также можете прочитать файл HTML, используя «функцию чтения», и когда вы запустите код, файл HTML отобразится в консоли.
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:
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:
- Install requests module and import it to your project.
- Use requests.get() to download the data behind that URL.
- Write the file to a file in your system by calling open().
Here is an example:
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:
As a result of running this piece of code, you see the Instagram icon appear in the same folder where your program file is.
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:
- wget
- urllib
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:
- Import the wget module into your project.
- 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 :
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:
- Import the urllib module into your project.
- 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 :
As a result of running the code, you can see an Instagram icon appear in the folder of your program.
Given a URL to a text file, what is the simplest way to read the contents of the text file?
In Python, when given the URL for a text file, what is the simplest way to access the contents off the text file and print the contents of the file out locally line-by-line without saving a local copy of the text file?
14 Answers 14
Edit 09/2016: In Python 3 and up use urllib.request instead of urllib2
Actually the simplest way is:
You don’t even need "readlines", as Will suggested. You could even shorten it to: *
But remember in Python, readability matters.
However, this is the simplest way but not the safe way because most of the time with network programming, you don’t know if the amount of data to expect will be respected. So you’d generally better read a fixed and reasonable amount of data, something you know to be enough for the data you expect but will prevent your script from been flooded: