Перейти к содержимому

Как скачать файл по ссылке python

  • автор:

Как скачать файл с помощью Python?

url = ‘lenta.com/contentassets/413fc8748e5c4b95a2a8f2b99a274ce5/…», «LN15_katalog_SM_SZFO_OMNI.pdf’ import urllib urllib.urlretrieve(url, «tutorial.pdf») import requests r = requests.get(url) with open(«tutorial1.pdf», «wb») as code: code.write(r.content)

24 июл 2020 в 8:03

@Валера код в сам вопрос, а не в комментарии, с соответствующим форматированием. А чтобы обратиться к конкретному участнику, указывайте собаку + его ник — так он получит уведомление о сообщении

24 июл 2020 в 8:05

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

pip3 install wget

import wget wget.download('https://lenta.com/contentassets/413fc8748e5c4b95a2a8f2b99a274ce5/LN15_katalog_SM_SZFO_OMNI.pdf') 

Отслеживать
ответ дан 24 июл 2020 в 10:36
USERNAME GOES HERE USERNAME GOES HERE
10.4k 21 21 золотой знак 25 25 серебряных знаков 53 53 бронзовых знака

import urllib.request destination = 'название файла' url = 'ссылка' urllib.request.urlretrieve(url, destination) 

Он будет лежать в папке с проектом

Отслеживать
ответ дан 24 июл 2020 в 8:05
LeonidPetrovich LeonidPetrovich
136 10 10 бронзовых знаков
AttributeError: module ‘urllib’ has no attribute ‘urlretrieve’
24 июл 2020 в 8:07
@Валера Внёс изменения в код , посмотрите
24 июл 2020 в 8:09

raise InvalidURL(f»URL can’t contain control characters. » http.client.InvalidURL: URL can’t contain control characters. ‘/contentassets/413fc8748e5c4b95a2a8f2b99a274ce5/LN15_katalog_SM_SZFO_OMNI.pdf», «LN15_katalog_SM_SZFO_OMNI.pdf’ (found at least ‘ ‘)

24 июл 2020 в 8:11

  • python
  • файлы
  • url
  • requests
  • download
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как загружать файлы с URL-адреса в Python

Как загружать файлы с 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»Загрузка «, total=file_size, unit=»B», unit_scale=True, unit_divisor=1024)
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 мы установили виртуальную машину.

Создано 04.01.2022 11:50:26

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Как указать путь скачивания файла по ссылке?

    И так здравствуйте, у меня есть код который позволяет скачивать файлы по ссылке, но мне хотелось бы его изменить так, что б можно было указать путь куда скачивать данный файл. Как правильно это реализовать ?

    def downloadin(path, link): filename = link.split("/")[-1] dfile = requests.get(link) open(filename, "wb").write(dfile.content)

    Естественно аргумент path сейчас нигде не указан, но хотелось бы что б я мог указать путь , и файл туда скачается

    • Вопрос задан более двух лет назад
    • 152 просмотра

    Комментировать

    Решения вопроса 1

    Zoominger

    Рональд Макдональд @Zoominger Куратор тега Python

    System Integrator

    open(filename, «wb»).write(dfile.content)

    Выделил болдом. Надо сделать типа так:

    open(your_path + filename, «wb»).write(dfile.content)

    Ответ написан более двух лет назад

    Скачать файл с сайта по конкретной ссылке

    Как давать пользователю скачать файл с сайта не по прямой ссылке,чтобы он не смог скачать его 2 раза по той же ссылке?
    Грубо говоря, надо давать пользователю скачать файл, если он ввёл правильный пароль. Чтобы он не.

    Последовательный доступ к конкретной ссылке сайта
    Есть работающий сайт. На него по запросу на ссылку, назовем ее /job сервер выдает одну запись из БД.

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

    Скачать файл по ссылке
    Добрый день! Значит вот с чем столкнулся, делаю SSIS пакет который должен будет скачивать файл.

    4973 / 3209 / 1125
    Регистрация: 21.03.2016
    Сообщений: 7,939

    ЦитатаСообщение от dimka77783 Посмотреть сообщение

    ссылка на конкретный файл

    ссылка на страницу авторизации. где там файл?

    import urllib.request urllib.request.urlretrieve('https://www.meme-arsenal.com/memes/b354263b396676055aefd9baa50ca9ac.jpg', 'out.jpg')

    Регистрация: 16.09.2020
    Сообщений: 47

    я авторизован, при переходе по ссылке файл сразу скачивается.
    дело ав том что это будет закциклено потом

    Добавлено через 2 минуты
    так же пробовал

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    import requests, shutil, os url = 'https://auth.nlmk.com/blitz/login/methods/password' payload = {'Login': '*****', 'Password': '*****', 'RememberMe': 1} session = requests.session() r = requests.post(url, data=payload) print (r.status_code) print (r.cookies) s='https://ideas.nlmk.com/user/Offer.aspx?id=128902' (dirname, filename) = os.path.split(s) r = requests.get(s, stream=True) if r.status_code == 200: with open(filename, 'wb') as f: print(r) r.raw.decode_content = True shutil.copyfileobj(r.raw, f) print(filename)

    пишет
    with open(filename, ‘wb’) as f:

    OSError: [Errno 22] Invalid argument: ‘Offer.aspx?id=128902’

    4973 / 3209 / 1125
    Регистрация: 21.03.2016
    Сообщений: 7,939
    не может имя файла ‘Offer.aspx?id=128902’ содержать ?. это требование системы замените ? на _
    Регистрация: 16.09.2020
    Сообщений: 47

    заменил
    но файл не пойму куда сохранился? в папке со скриптом нет

    Добавлено через 22 минуты
    при запуске кода построчно

    1 2 3
    if r.status_code == 200: ^ SyntaxError: unexpected EOF while parsing

    87844 / 49110 / 22898
    Регистрация: 17.06.2006
    Сообщений: 92,604
    Помогаю со студенческими работами здесь

    Скачать файл по ссылке
    Добрый день. Такое интересное задание (ну дал админ мне его) как студенту практиканту, но дело в.

    Скачать файл по ссылке
    Добрый день, в БД хранятся ссылки на фото, подскажите какой командой можно их скачать на локальный.

    Скачать файл по ссылке
    Объчно делаю так WebClient webClient = new WebClient(); .

    Скачать файл по JavaScript-ссылке
    Вот такая проблемка. Chromium (dcef3), как и google chrome не хочет качать фаил javascript! Все.

    Скачать файл по прямой ссылке.
    Нужно скачать файл по прямой ссылке в консольке, который будет сохранять файл по опр. пути. Буду.

    Скачать файл с интернета по прямой ссылке
    появилась необходимость в скачивании файла с инета по прямой ссылке, но к сажелению в инете на СИ.

    Как скачать файл по прямой ссылке?
    Как реализовать скачивание .exe файла по прямой ссылке? Сама ссылка: http://vk.cc/5bTajq Через.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *