Как скачать файл с помощью 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.
24 июл 2020 в 8:11
- python
- файлы
- url
- requests
- download
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Скачивание файлов из Интернета с использованием Python
В современном мире часто возникает необходимость скачивания файлов из интернета. Существует множество инструментов и библиотек, которые позволяют это делать, однако они могут быть сложными для новичков и тех, кто только начинает изучать язык Python. В этой статье будет показан простой и эффективный способ скачивания файлов из Интернета с использованием Python.
Допустим, существует задача скачивания mp3-файла с некоторого сайта. Это может быть необходимо для создания подкаста или сбора музыкальной коллекции. Обычно такие задачи решаются с помощью специализированных утилит, однако они могут быть неудобными в использовании или требовать установки дополнительного программного обеспечения. Вместо этого можно использовать Python, который предоставляет высокоуровневые библиотеки для работы с сетью и файлами.
Одной из таких библиотек является requests . Она предоставляет простой в использовании интерфейс для отправки HTTP-запросов и обработки ответов. Для скачивания файла можно использовать метод get() , который отправляет GET-запрос на указанный URL и возвращает ответ сервера. Затем полученные данные можно записать в файл с помощью стандартных средств Python.
Вот простой пример кода, который скачивает mp3-файл по URL:
import requests url = 'http://example.com/song.mp3' response = requests.get(url) with open('song.mp3', 'wb') as file: file.write(response.content)
В этом коде сначала импортируется библиотека requests , затем задается URL mp3-файла. Далее отправляется GET-запрос на этот URL и получается ответ сервера. Затем открывается файл song.mp3 на запись в двоичном режиме, и в него записывается содержимое ответа сервера.
Таким образом, скачивание файлов из Интернета с использованием Python является простой и эффективной задачей, которую можно легко решить с помощью библиотеки requests .
Каким образом скачать файл с прединициализацией?
Выполняю парсинг сайта с предварительной авторизацией через библиотеку requests. Дошёл до момента скачивания файла по ссылке вида https://somesite.org/download.php?id=433
Проблема в том, что такая ссылка требует предварительной инициализации (как, кстати, такие ссылки называются по-английски?) — т.е. сначала обращаешься к ссылке, а далее выдается сам файл на скачивание.
Был тут, не помогло, ибо сюда local_filename передается не само название файла, а кусок ссылки (в моем примере это «download.php?id=433»).
Нашёл это, однако там предлагается использовать библиотеку urllib, но дело в том, что я работаю из-под requests и переделываться на urllib не хочу (да и requests как бы стандартом считается, что ли), а urllib, к сожалению, не знает ничего про сессию (куки), созданную библиотекой requests и, соответственно, ничего скачать вот таким образом: urllib.request.urlretrieve(url, path_to_file) не может, т.к. не имеет доступа к файлу.
Подскажите, пожалуйста, какие могут быть решения?
- Вопрос задан более трёх лет назад
- 371 просмотр
Комментировать
Решения вопроса 1
Александр @shabelski89
вот как я качаю торрент файл из одного известного трекера
with requests.Session() as session: cookies = dict(uid=uid, usess=usess) auth = dict(username=login, password=password) # Данные в виде словаря, которые отправлятся в POST r = session.get(url, timeout=5) # Получаем страницу с формой логина r.encoding = 'utf-8' session.post(url, auth) # Отправляем данные в POST, в session записываются наши куки r = session.get(link, cookies=cookies, timeout=5) open('some_file_name', 'wb').write(r.content)
Ответ написан более трёх лет назад
Нравится 2 2 комментария
The_Immortal @The_Immortal Автор вопроса
Хм, всё так просто оказалось. Я изначально так и пробовал, кстати, но не подумал про таймаут похоже. Куки, кстати, при скачивании вроде как указывать не обязательно (по крайней мере у меня без них скачивается).
Александр @shabelski89
The_Immortal, нет ли там запрещенных символов? как выглядит r.headers.get(‘Content-Disposition’) в браузере?
и почему двойные кавычки в выходе функции get_filename_cd получаются?
Installation#
If your Python environment does not have pip installed, there are 2 mechanisms to install pip supported directly by pip’s maintainers:
ensurepip #
Python comes with an ensurepip module [ 1 ] , which can install pip in a Python environment.
$ python -m ensurepip --upgrade
$ python -m ensurepip --upgrade
C:> py -m ensurepip --upgrade
More details about how ensurepip works and how it can be used, is available in the standard library documentation.
get-pip.py #
This is a Python script that uses some bootstrapping logic to install pip.
- Download the script, from https://bootstrap.pypa.io/get-pip.py.
- Open a terminal/command prompt, cd to the folder containing the get-pip.py file and run:
$ python get-pip.py
$ python get-pip.py
C:> py get-pip.py
More details about this script can be found in pypa/get-pip’s README.
Standalone zip application#
The zip application is currently experimental. We test that pip runs correctly in this form, but it is possible that there could be issues in some situations. We will accept bug reports in such cases, but for now the zip application should not be used in production environments.
In addition to installing pip in your environment, pip is available as a standalone zip application. This can be downloaded from https://bootstrap.pypa.io/pip/pip.pyz. There are also zip applications for specific pip versions, named pip-X.Y.Z.pyz .
The zip application can be run using any supported version of Python:
$ python pip.pyz --help
$ python pip.pyz --help
C:> py pip.pyz --help
If run directly:
$ python -m pip.pyz --help
$ python -m pip.pyz --help
C:> py -m pip.pyz --help
then the currently active Python interpreter will be used.
Alternative Methods#
Depending on how you installed Python, there might be other mechanisms available to you for installing pip such as using Linux package managers .
These mechanisms are provided by redistributors of pip, who may have modified pip to change its behaviour. This has been a frequent source of user confusion, since it causes a mismatch between documented behaviour in this documentation and how pip works after those modifications.
If you face issues when using Python and pip installed using these mechanisms, it is recommended to request for support from the relevant provider (eg: Linux distro community, cloud provider support channels, etc).
Upgrading pip #
Upgrade your pip by running:
$ python -m pip install --upgrade pip
$ python -m pip install --upgrade pip
C:> py -m pip install --upgrade pip
Compatibility#
The current version of pip works on:
- Windows, Linux and MacOS.
- CPython 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, and latest PyPy3.
pip is tested to work on the latest patch version of the Python interpreter, for each of the minor versions listed above. Previous patch versions are supported on a best effort approach.
Other operating systems and Python versions are not supported by pip’s maintainers.
Users who are on unsupported platforms should be aware that if they hit issues, they may have to resolve them for themselves. If they received pip from a source which provides support for their platform, they should request pip support from that source.
The ensurepip module was added to the Python standard library in Python 3.4.
