Нужно вместе urllib.urlretrieve и urllib2.OpenerDirector - PullRequest
1 голос
/ 28 декабря 2010

Я пишу скрипт на Python 2.7, который использует экземпляр urllib2.OpenerDirector через urllib2.build_opener(), чтобы воспользоваться классом urllib2.HTTPCookieProcessor, потому что мне нужно хранить и повторно отправлять мне полученные куки:

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))

Однако, после нескольких запросов и перемещения файлов cookie, в конечном итоге мне нужно получить список URL-адресов.Я хотел использовать urllib.urlretrieve(), потому что я читал, что он загружает файл порциями, но я не могу, потому что мне нужно нести свои куки по запросу, а urllib.urlretrieve() использует urllib.URLOpener, который не поддерживает такие обработчики cookie, какOpenerDirector имеет.

В чем причина этого странного способа разделения функциональности и как я могу достичь своей цели?

1 Ответ

3 голосов
/ 28 декабря 2010

urlretrieve - старый интерфейс от urllib.Это было там задолго до появления urllib2.Он не имеет никаких возможностей обработки сеансов.Он просто скачивает файлы.Обновленный urllib2 обеспечивает гораздо лучший способ работы с сеансами, паролями и дополнительными прокси-серверами, используя его интерфейс обработчиков OpenerDirector.Чтобы просто загрузить URL-адреса в виде файлов, вы можете просто использовать urlopen-вызов urllib2, используя тот же объект запроса, который вы создали.Это сохранит сеанс.

...