Как скачать файл на python 3

Для скачивания файлов в python есть очень мощная библиотека — requests. Почти все свои программки для работы с сайтами я пишу с использованием этого модуля. Он удобный, быстрый и многофункционален. Позволяет изменять headers, body, скачивать и заливать файлы. В этом посте я хочу рассказать вам как с легкостью качать файлы на питоне.

Простой запрос страницы через requests

Запросить код сайта можно обычным запросом requests.post(«http://bdseo.ru»).

Как вывести содержимое страницы после запроса

Чтобы обрабатывать результаты, нужно запросу присвоить переменную:

r = requests.post("http://bdseo.ru")
print(r.text)

Теперь можно вывести результат запросом r.text (или print(r.text)).

Как сохранить страницу html через requests

1. Делаем запрос.
2. Записываем данные в файл.
На примере (полный код программы):

import requests #импортируем модуль
send=requests.post('http://bdseo.ru') #делаем запрос
file = open('D://bdseo.html','w') #создаем файл для записи результатов
file.write(send.text) #записываем результат
file.close() #закрываем файл

После этого на диске Д появился файл с содержимым главной страницы моего блога. Иногда может потребоваться сменить кодировку текста (питон буде подсказывать, выдавать ошибки).

Примеры запросов requests на python 3

Скачивать файлы можно посредством POST или GET запросов. Сам код запроса почти одинаковый:

 send_request = requests.post(url, headers=my_head, data=params)
или GET-запрос
send_request = requests.get(url, headers=my_head, data=params)

Где:
send_request — моя переменная, сам запрос. Нужна для дальнейшего обращения к результатам (например, send_request.text — выведет весь код страницы; send_request.url — ссылка страница, если был редирект — то ссылка-редиректа; send_request.headers — код-хедерс страницы);
my_head — если я менял headers, то передаю свои параметры (например, подменил User-agent);
params — параметры запроса; например, логин/пароль.

Как сохранить файл через python (модуль requests)

Логика скачивания файла следующая:
1) делаем запрос на ссылку файла;
2) записываем данные в файл на ПК.

Выглядит все этого следующим образом (полный код программы):

import requests #импортируем модуль
f=open(r'D:\file_bdseo.zip',"wb") #открываем файл для записи, в режиме wb
ufr = requests.get("http://site.ru/file.zip") #делаем запрос
f.write(ufr.content) #записываем содержимое в файл; как видите - content запроса
f.close()

Данный код скачает файл на диск Вашего компьютера. Обратите внимание на комментарии — режим записи ‘wb’, сохраняем ‘content’. Закрывайте файл после запроса.

Как скачать файл через прокси в python

Модуль requests имеет подробную документацию (на английском) — http://docs.python-requests.org/en/master/. Работать с сайтами можно и через прокси, для этого достаточно добавить в запрос данные по прокси.
Пример кода:

proxy='alogin:parol@10.1.1.1:3128' #данные прокси; логин, пароль и айпи адрес с портом
proxy = {'http': 'http://' + proxy, 'https': 'https://' + proxy} #делаем прокси доступным в http, https
bb3 = requests.get(url, proxies=proxy) #делаем запрос уже с прокси

Обратите внимание, что некоторые сайты могут блокировать публичные прокси, а также дополнительно запрашивать капчу (редко, но бывает).

Как скачать много файлов с сайта

Чтобы скачать много файлов — пользуйтесь циклами. Чтобы получить ссылки с сайта, если вы хотите скачать много файлов — «просканируйте» сайт на эти ссылки, а потом делайте запросы. Это можно делать также модулем requests в python 3, но это уже совсем другая тема.

veniamin

View Comments

  • А как сделать вывод загрузки?

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

    И как сделать вывод, вот например, "56% завершено". Посылая запросы на сайт, можно ли отследить загрузку?

    • Вариантов много, можно в tkinter, если просто через консоль (или IDLE) тоже можно.
      Гуглится просто: "progressbar download requests"; первые примеры на stackoverflow очень простые и полезные :)

Recent Posts

Как заработать токен NOT за стейкинг BNB или FDUSD

Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…

6 месяцев ago

Как заработать TON и NOT за стейкинг в телеграм

Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…

6 месяцев ago

Бонус 100 USDT +10 BUSD от Binance

Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…

3 года ago

Как парсить длительность видео youtube на php в привычном виде

Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…

3 года ago

Как удалить чужую сессию пользователя в ubuntu (linux)

Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…

3 года ago

Как наложить watermark на видео в python windows массово

Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…

3 года ago