Редактировать: после долгих хлопот, кажется, что urlgrabber преуспевает там, где происходит сбой urllib2, даже если он говорит, что закрывает соединение после каждого файла. Похоже, что-то не так с тем, как urllib2 обрабатывает прокси, или с тем, как я его использую!
В любом случае, вот самый простой код для извлечения файлов в цикле:
import urlgrabber
for i in range(1, 100):
url = "http://www.iana.org/domains/example/"
urlgrabber.urlgrab(url, proxies={'http':'http://<user>:<password>@<proxy url>:<proxy port>'}, keepalive=1, close_connection=1, throttle=0)
Привет всем!
Я пытаюсь написать очень простой скрипт на python, чтобы получить кучу файлов через urllib2.
Этот сценарий должен работать через прокси на работе (моей проблемы не существует, если захватывать файлы в интрасети, т. Е. Без прокси).
Указанный скрипт завершается ошибкой после пары запросов с «HTTPError: HTTP Error 401: ошибка базовой аутентификации». Есть идеи, почему это может быть? Кажется, прокси-сервер отклоняет мою аутентификацию, но почему? Первая пара запросов urlopen прошла правильно!
Редактировать: добавление 10 секунд ожидания между запросами, чтобы избежать какого-либо регулирования, которое может быть выполнено прокси-сервером, не изменило результаты.
Вот упрощенная версия моего скрипта (с явно удаленной идентифицированной информацией):
import urllib2
passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
passmgr.add_password(None, '<proxy url>:<proxy port>', '<my user name>', '<my password>')
authinfo = urllib2.ProxyBasicAuthHandler(passmgr)
proxy_support = urllib2.ProxyHandler({"http" : "<proxy http address>"})
opener = urllib2.build_opener(authinfo, proxy_support)
urllib2.install_opener(opener)
for i in range(100):
with open("e:/tmp/images/tst{}.htm".format(i), "w") as outfile:
f = urllib2.urlopen("http://www.iana.org/domains/example/")
outfile.write(f.read())
Заранее спасибо!