Python скачать файл - PullRequest
       18

Python скачать файл

1 голос
/ 28 марта 2012

Я не уверен, как это сделать.Один способ:

import urllib.request;
urllib.request.urlretrieve('www.example.com/file.tar', 'file.tar')

Другой способ будет:

import urllib.request;

#Set as appropriate
userAgent = ....;

req = urllib.request.Request('www.example.com/file.tar', headers={'User-Agent' : userAgent});
response = urllib.request.urlopen(req);

#Save the file
f = open('file.tar', 'wb');
f.write(response.read());
f.close()

Я не уверен, какой метод использовать.Я буду загружать много файлов (с именем файла шаблона) в цикле.Тем не менее, я хотел бы иметь возможность настроить заголовок агента пользователя.Это не критично, но я бы хотел.

РЕДАКТИРОВАТЬ: я забыл упомянуть, что предпочитаю первый метод, но я не знаю, как установить заголовок user-agent с помощью urlretrieve.

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Я перемещаю то, что началось как комментарии, в ответ ...

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

urlretrieve - это функция более высокого уровня, поэтому она выполняет только то, что говорят документы: загружает сетевой ресурс в локальный файл и сообщает вам, где находится файл.Если вам не нравится немного более низкоуровневый подход из второго примера, и вам нужны более функциональные возможности более высокого уровня, вы можете использовать Requests library

0 голосов
/ 16 октября 2015

Как сказал @jdi, вы можете использовать библиотеку запросы . Это также упоминается в https://docs.python.org/2/library/urllib2.html.. Вам нужно будет передать библиотеку, например,

pip install requests

Мой код выглядит так:

import requests

def download_file(url):
    file = requests.get(url)
    return file.text

Это не может быть проще.

...