Форум сайта python.su
0
Подскажите пожалуйста:
1) как скачать файл через HTTP, с учетом если локальная его копия не изменилась - то не качать
аналог wget -N
2) как скачать файл через HTTP используя логин и пароль, аналог wget –http-user=
3) как скачать файл с FTP используя маску в имени файла, через wget я делал как wget … ftp
/server.com/file-1*.zip
Думаю ответы на эти вопросы будут полезны не только мне, но и другим новичкам! Большое спасибо!
Офлайн
221
true
Если вам решать конкретную задачу, то походу будет проще из питона вызывать wget ( через модуль subprocess), иначе по каждому вопросу может получится достаточно объемный вопрос.
Офлайн
173
Согласен с JOHN_16, но можно и самому написать. С использованием requests:
1) Упрощено, без обработки ошибок:
import email.utils import os import datetime import shutil import requests def parse_datetime(text): dtz = email.utils.parsedate_tz(text) dt = datetime.datetime(*dtz[:6]) if dtz[9]: # utc offset dt += datetime.timedelta(hours=dtz[9]) return dt def download_if_modified(url, filename): resp = requests.get(url, prefetch=False) need_to_download = True if os.path.exists(filename): urldate = parse_datetime(resp.headers['last-modified']) filedate = datetime.datetime.utcfromtimestamp(os.path.getmtime(filename)) need_to_download = urldate > filedate if need_to_download: with open(filename, "wb") as fp: shutil.copyfileobj(resp.raw, fp) return need_to_download download_if_modified('http://python.su/static/images/logo.gif', 'logo.gif') download_if_modified('http://yandex.st/www/1.400/yaru/i/logo.png', 'logo.png')
Отредактировано reclosedev (Дек. 13, 2012 07:33:25)
Офлайн