У меня есть небольшая утилита, которую я использую для загрузки MP3-файла с веб-сайта по расписанию, а затем создает / обновляет XML-файл подкаста, который я добавил в iTunes.
Текстовая обработка, которая создает / обновляет XML-файл, написана на Python. Однако я использую wget внутри файла Windows .bat для загрузки фактического MP3-файла. Я бы предпочел, чтобы вся утилита была написана на Python.
Я изо всех сил пытался найти способ фактически загрузить файл на Python, поэтому я прибегнул к использованию wget.
import urllib.request with urllib.request.urlopen('http://www.example.com/') as f: html = f.read().decode('utf-8')
Это самый простой способ использования библиотеки, без какой-либо обработки ошибок. Вы также можете выполнять более сложные действия, такие как изменение заголовков.
Вы можете запустить pip install requests, чтобы получить его.
Запросы имеют много преимуществ перед альтернативами, потому что API намного проще. Это особенно верно, если вам нужно выполнить аутентификацию. urllib и urllib2 в этом случае довольно неинтуитивны и болезненны.
2015-12-30
Люди выразили восхищение индикатором выполнения. Это круто, конечно. Сейчас есть несколько готовых решений, в том числе tqdm:
withopen("10MB", "wb") as handle: for data in tqdm(response.iter_content()): handle.write(data)
По сути, это реализация, описанная @kvance 30 месяцев назад.
Ответ 4
import urllib2 mp3file = urllib2.urlopen("http://www.example.com/songs/mp3.mp3") withopen('test.mp3','wb') as output: output.write(mp3file.read())
wb In open('test.mp3','wb') открывает файл (и удаляет любой существующий файл) в двоичном режиме, чтобы вы могли сохранять в нем данные, а не просто текст.