Для скачивания файлов в python есть очень мощная библиотека — requests. Почти все свои программки для работы с сайтами я пишу с использованием этого модуля. Он удобный, быстрый и многофункционален. Позволяет изменять headers, body, скачивать и заливать файлы. В этом посте я хочу рассказать вам как с легкостью качать файлы на питоне.
Запросить код сайта можно обычным запросом requests.post(«http://bdseo.ru»).
Чтобы обрабатывать результаты, нужно запросу присвоить переменную:
r = requests.post("http://bdseo.ru") print(r.text)
Теперь можно вывести результат запросом r.text (или print(r.text)).
1. Делаем запрос.
2. Записываем данные в файл.
На примере (полный код программы):
import requests #импортируем модуль send=requests.post('http://bdseo.ru') #делаем запрос file = open('D://bdseo.html','w') #создаем файл для записи результатов file.write(send.text) #записываем результат file.close() #закрываем файл
После этого на диске Д появился файл с содержимым главной страницы моего блога. Иногда может потребоваться сменить кодировку текста (питон буде подсказывать, выдавать ошибки).
Скачивать файлы можно посредством 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 — параметры запроса; например, логин/пароль.
Логика скачивания файла следующая:
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’. Закрывайте файл после запроса.
Модуль 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, но это уже совсем другая тема.
Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…
Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…
Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…
Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…
Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…
Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…
View Comments
А как сделать вывод загрузки?
То есть, вот я уже давно пользуюсь модулем requests. Скачиваю по одной серии сериал, он как бы автоматически скачивает одну серию, уведомляет меня и если я этого хочу, скачивает следующую.
И как сделать вывод, вот например, "56% завершено". Посылая запросы на сайт, можно ли отследить загрузку?
Вариантов много, можно в tkinter, если просто через консоль (или IDLE) тоже можно.
Гуглится просто: "progressbar download requests"; первые примеры на stackoverflow очень простые и полезные :)
Огромное спасибо! Статья супер!
спасибо за комментарий, мне приятно.