我在Python 2.7中编写一个脚本,它使用urllib2.OpenerDirector
实例urllib2.build_opener()
来利用urllib2.HTTPCookieProcessor
类,因为我需要存储和重新发送cookie我明白了:
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
然而,在发出几个请求并移动cookie之后,最终我需要检索一个URL列表。我想使用urllib.urlretrieve()
,因为我读过它以块的形式下载文件,但我不能,因为我需要在请求中携带我的cookie
urllib.urlretrieve()
使用urllib.URLOpener
,它不支持OpenerDirector
等Cookie处理程序。
这种分裂功能的奇怪方式是什么原因,我怎样才能实现目标?
答案 0 :(得分:3)
urlretrieve
是来自urllib
的旧界面。在urllib2成立之前,它就在那里。它没有任何会话处理功能。它只是下载文件。更新后的urllib2
提供了更好的方式,可以使用其Handler接口OpenerDirector类处理会话,密码,代理。为了只将URL作为文件下载,您可以使用您创建的同一请求对象来使用urllib2的urlopen调用。这将维持会话。