为什么要使用Cookie呢?
Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)
比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了。
代码如下:
#encoding=utf-8
#保存cookie到变量
import urllib2
import cookielib
#第一步:得到一个cookie实例对象来保存Cookie内容
cookie=cookielib.CookieJar()
#第二步:利用urllib2库的HTTPCookieProcessor对象
hander=urllib2.HTTPCookieProcessor(cookie)
#第三步:得到一个opener
opener=urllib2.build_opener(hander)
response=opener.open("http://www.baidu.com")
for item in cookie:
print "Name="+item.name
print "Value="+item.value
#encoding=utf-8
#完成的功能为:将cookie写入文件中
import urllib2
import cookielib
file="cookie.txt"
#第一步:利用FileCookieJar的子类MozillaCookieJar
cookie=cookielib.MozillaCookieJar(file)
#第二步:用HTTPCookieProcessor来创建一个Cookie的处理器
hander=urllib2.HTTPCookieProcessor(cookie)
#第三步:创建一个opener
opener=urllib2.build_opener(hander)
#创建一个请求
response=opener.open("http://www.baidu.com")
#第四步:将cookie保存到文本中
cookie.save(ignore_discard=True,ignore_expires=True)
#encoding=utf-8
#从文本中读取cookie来访问网页
import urllib2
import urllib
import cookielib
file="cookie.txt"
#第一步:创建一个cookie变量
cookie=cookielib.MozillaCookieJar()
#第二步:对文件读取cookie到变量中
cookie.load(file,ignore_discard=True,ignore_expires=True)
#第三步:利用urllib2的HTTPCookieProcessor来创建一个cookie处理器
hander=urllib2.HTTPCookieProcessor(cookie)
#第四步:创建一个opener
opener=urllib2.build_opener(hander)
#创建一个请求
request=urllib2.Request("http://www.baidu.com")
response=opener.open(request)
print response.read()
创建一个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利用这个cookie来访问其他网址。
#encoding=utf-8
#功能:模拟网站登陆
import urllib2
import urllib
import cookielib
#第一步:创建一个cookie变量
file="cookie_1.txt"
cookie=cookielib.MozillaCookieJar(file)
#第二步:利用urllib2的HTTPCookieProcessor来创建一个cookie处理器
hander=urllib2.HTTPCookieProcessor(cookie)
#第三步:创建一个opener
opener=urllib2.build_opener(hander)
#要传送的data
values={"stuid":"xxxxx","pwd":"xxxxxx"}
data=urllib.urlencode(values)
url="http://idas.uestc.edu.cn/authserver/login"
request=urllib2.Request(url,data)
#模拟登陆
response=opener.open(request)
#第四步:保存cookie
cookie.save(ignore_discard=True,ignore_expires=True)
#利用此时的cookie变量来访问另外一个网站
gradeurl="http://bbs.uestc.edu.cn/"
response=opener.open(gradeurl)
print response.read()