Python 3.2 - cookielib库

39 投票
4 回答
72419 浏览
提问于 2025-04-17 07:50

我有一段在2.7版本上能正常运行的代码,但在3.2版本中找不到cookielib和urllib2这两个东西。请问我该如何让这段代码在3.2版本上运行呢?顺便说一下,我是在Windows系统上。

示例 2.7

import urllib, urllib2, cookielib

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

login_data = urllib.urlencode({'login' : 'admin', 'pass' : '123'})

resp = opener.open('http://website/', login_data)
html = resp.read()

# I know that 3.2 is using print(), don't have to point that out.
print html

4 个回答

19

一句话就能解决你的问题。

import http.cookiejar as cookielib

这是针对Python 3的写法。你在代码中用到的cookielib不需要做任何修改。

21

如上所述,cookielib这个库已经改名了。你可以使用下面这段代码,它适用于Python 2和Python 3:

try:
    from http.cookiejar import CookieJar
except ImportError:
    from cookielib import CookieJar
49

来自 Python文档

注意:在Python 3.0中,cookielib模块已经改名为http.cookiejar。当你使用2to3工具将你的代码转换为3.0版本时,它会自动调整导入的内容。

这不是一个可以接受的解决方案吗?如果不是,为什么呢?

撰写回答