Скачивание файлов из интернета - это, наверно, та задача, с которой рано или поздно сталкивается любой программист. Самый популярный способ сделать это - использовать модули urllib или urllib2 для работы через http. Кроме этого у Вас есть модуль для работы с ftp. Наконец, у Вас есть сторонний модуль под названием request. В этой статье мы посмотрим как работать с модулями для http.
Так как это достаточно простая задача, то мы лишь сделаем маленький скрипт который загружает один и тот же zip файл тремя разными способами. Давайте посмотрим:
import urllib2
import requests
url = 'http://www.blog.pythonlibrary.org/wp-content/uploads/2012/06/wxDbViewer.zip'
print "downloading with urllib"
urllib.urlretrieve(url, "code.zip")
print "downloading with urllib2"
f = urllib2.urlopen(url)
data = f.read()
with open("code2.zip", "wb") as code:
code.write(data)
print "downloading with requests"
r = requests.get(url)
with open("code3.zip", "wb") as code:
code.write(r.content)
Как Вы можете видеть, urllib требует всего одной строки, его достаточно легко использовать. С другой стороны и два других способа не сильно сложнее. Для urllib2 Вам надо открыть url, затем прочитать его и записать данные в файл. На самом деле, Вы можете сократить количество кода на одну строку:
f = urllib2.urlopen(url)
with open("code2.zip", "wb") as code:
code.write(f.read())
В любом случае это работает. Метод для чтения называется get, что соответствует HTTP GET. Мы получаем данные и затем записываем их при помощи менеджера контекста (выражения with), что позволяет нам автоматически закрыт файл и опять же сократить код.
Я думаю, что код можно сделать ещё короче, если уж извращаться (хотя сам не проверял):
code.write(urllib2.urlopen(url).read())
Вот так всё просто. Теперь Вы можете легко скачивать файлы при помощи Python.
Что почитать по теме:
- StackOverFlow: Как можно скачать файл по HTTP с помощью Python?
- Скачивание файла из сети - recipe
Источник
Комментариев нет:
Отправить комментарий