原文链接:静觅 » Python爬虫入门六之Cookie的使用
为什么要使用cookie?
cookie是指网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常是经过加密的)如果你未登录,想获取某个页面的内容是不被允许的。我们可以利用urllib2保存登录的cookie信息,然后获取页面内容。
1,Opener
当你获取一个url你使用一个opener
2,Cookielib模块
此模块的主要功能是提供可存储的cookie的对象,以便于与urllib2模块配合使用来访问internet资源。我们可以使用CookieJar类的对象来捕捉cookie并在后续链接请求时重新发送。该模块的对象主要有:CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
1),获取cookie保存到变量
import urllib2
import cookielib
#声明一个CookieJar对象实例来保存cookie
cookie=cookielib.CookieJar()
#利用urllib2的HTTPCookieProcssor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener=urllib2.build_opener(handler)
response=opener.open("http://...")
for item in cookie:
print "name="+item.name
print "value="+item.value
2),保存cookie到文件
import cookielib
import urllib2
#设置保存cookie的文件,统计目录下的cookie.txt
filename="cookie.txt"
#声明一个MozillaCookieJar对象来保存cookie并写入文件
cookie=cookielib.MozillaCookieJar(filename)
handler=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(handler)
response=opener.open("http://....")
#保存cookie到文件,ignore_discard=True表示即使cookie将被丢弃也将它保存下来,ignore_expires=True表示如果以存在则被覆盖写入
cookie.save(ignore_discard=True,ignore_expires=True)
3),从保存的文件中获取cookie并访问
如第二步,已经将cookie保存到文件中,以后使用:
import urllib2
import cookielib
cookie=cookielib.MozillaCookieJar()
cookie.load("cookie.txt",ignore_discard=True,ignore_expires=True)
request=urllib2.Request("http://...")
opener=opener.open(requst)
print response.read()
4),利用cookie模拟网站登录
import urllib2
import urllib
import cookielib
filename="cookie.txt"
cookie=cookielib.MozillaCookieJar(filename)
handler=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(handler)
url="http://..."
values={"username":"bob","password":"123"}
data=urllib2.encode(values)
user-agent="Mozilla4.0...."
headers={"User-Agent":user-agent}
request=urllib2.Request(url,data,headers)
response=opener.open(request)
cookie.save(ignore_discard=True,ignore_expires=True)
nexturl="http://....."
request=urllib2.Request(nexturl)
result=opener.open(requst)
print result.read()
创建一个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利用这个cookie来访问其他网址。