需要urllib.urlretrieve和urllib2.OpenerDirector

时间:2010-12-28 08:57:21

标签: python cookies urllib2 urllib

我在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处理程序。

这种分裂功能的奇怪方式是什么原因,我怎样才能实现目标?

1 个答案:

答案 0 :(得分:3)

urlretrieve是来自urllib的旧界面。在urllib2成立之前,它就在那里。它没有任何会话处理功能。它只是下载文件。更新后的urllib2提供了更好的方式,可以使用其Handler接口OpenerDirector类处理会话,密码,代理。为了只将URL作为文件下载,您可以使用您创建的同一请求对象来使用urllib2的urlopen调用。这将维持会话。