换到Python3后发现实现登录后访问网页轻松了不少,而且逻辑也更清晰了。
简单来说像这样:
import http.cookiejar
import urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
其中:
cj = http.cookiejar.CookieJar()
创建一个用来存储cookie
的对象
urllib.request.HTTPCookieProcessor(cj)
将这个对象加载到urllib
模块
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
构造使用这个cookiejar
的opener
r = opener.open("http://example.com/")
只是一个非常简单的例子,实际上一般是用open()
函数执行一个Request
对象,比如:
get = urllib.request.Request(
url='http://' + host, headers=headers, method='GET')
con = dealer.open(get).read().decode('gbk')
另外,只要使用的cookiejar
不变,就可以构建无数多个opener
,opener
构建好后就不再需要分神去处理cookie
问题了,只需要专注于发送网页请求,对网页进行处理之类的了。
http.cookiejar
实际包含很多有用的功能,比如存储cookie
到文件,从文件加载cookie
,这样可以实现很多意想不到的功能。