О, всё, проблема решена, случайно наткнулся в неожиданном месте на решение:
def dldfile(url,fn):
urllib.FancyURLopener.version="Mozilla/5.0"
try: urlretrieve(url,fn)
except: return 0
else: return 1
Но всё-же, как правильно называется эта строка - “Mozilla/5.0” ? Какие они у других браузеров?
================================================================
Не знаю, как это всё называется в терминах, посему гуглить и искать на форуме не получается.
Работаю с
http://imgsrc.ru, использую след. функцию:
def dldfile(url,fn):
try: urlretrieve(url,fn)
except: return 0
else: return 1
Пару дней назад перестало работать, файлы стали нулевой длинны*. Подозреваю, что админы сайта заблокировали запросы от имени urllib. У Откидача читал, что у urllib есть “version - атрибут класса с именем программы клиента… по умолчанию исп. строка ”Python-urllib/urllib_version“, вы можете переопределить атрибут version в определении производного класса, чтобы изменить имя программы, посылаемое серверу”.
Так вот - как, куда или где этот version нужно менять? Или какие ещё есть способы замаскироваться под другой браузер?
PS. и подскажите, приблизительно какой вид имеют эти строки определений у браузеров. Простые ли они типа “IE/6.0” или сложные с кучей спецсимволов, версий и подверсий?
*) wget же их успешно выкачивает, но связка python + wget - довольно неуклюжа и негибка.
или хотя-бы подскажите, как это всё называется, чтоб гуглить.
Отредактировано (Март 6, 2010 01:40:15)