2011-12-06 29 views
12

我有工作2.7碼,但也有在3.2 cookielib和的urllib2沒有這樣的事?我如何使這個代碼在3.2上工作?如果有人想知道 - 我在Windows上。的Python 3.2 - cookielib

實施例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 
+1

http://python3porting.com/stdlib.html –

回答

23

Python docs來自:

注cookielib模塊已被重命名在Python 3.0至http.cookiejar。 2to3工具會在將源代碼轉換爲3.0時自動適應導入。

那是不是可以接受的解決方案?如果不是,爲什麼?

7

如以上提到的cookielib已被重命名,使用下面的代碼段兩者蟒2和3:

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

在Python 3.2,urllib2的被重命名urllib.request裏,並cookielib被重命名http.cookiejar。所以,將其重命名爲urllib.request裏和http.cookijar