import urllib2, cookielib
cookielib: 主要作用是为urllib提供一个可用于存储cookie信息的对象,通常和urllib2模块结合着使用,通过这个对象可以用于跟踪后续请求中的cookie信息,自动管理cookie信息,这样就不需要我们每次请求的时候,都单独的设置cookie信息了。
1>创建一个用于跟踪cookie信息的对象
cookie_obj = cookielib.CookieJar()
2>根据cookie_obj对象,使用urllib2模块创建cookie信息的操作对象
# cookie_handler = urllib2.HTTPCookieProcessor(cookie_obj)
3>创建opener对象
# opener = urllib2.build_opener(cookie_handler)
# response = opener.open('http://neihanshequ.com/')
# for cookie in cookie_obj:
# print 'key={}, value={}'.format(cookie.name, cookie.value)
#
# response = opener.open('http://www.baidu.com')
# for cookie in cookie_obj:
# print 'baidu_key={}, baidu_value={}'.format(cookie.name, cookie.value)
如何将cookie信息保存成本地文件
CookieJar(保存cookie对象) — FileCookieJar — MozillaCookieJar(保存cookie文件)
# filename = 'cookie.txt'
# cookie_obj = cookielib.MozillaCookieJar(filename=filename)
#
# cookie_handler = urllib2.HTTPCookieProcessor(cookie_obj)
#
# opener = urllib2.build_opener(cookie_handler)
#
# response = opener.open('http://neihanshequ.com/')
# ignore_discard: True 即使cookie信息将要过期/废弃,也要将其保存到文件
# ignore_expires: True 即使cookie信息在文件中已经存在,仍然对其进行覆盖写入
# cookie_obj.save(ignore_discard=True, ignore_expires=True)
如何通过MozillaCookieJar对象发送请求时,加载本地的cookie.txt文件。
# cookie = cookielib.MozillaCookieJar()
# # 调用FileCookieJar类中的load()函数,加载本地文件的cookie信息
# cookie.load('cookie.txt', ignore_expires=True, ignore_discard=True)
#
# request = urllib2.Request('http://neihanshequ.com/')
# opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
#
# response = opener.open(request)
# print response
利用Cookie模拟网站的登录状态
cookie = cookielib.MozillaCookieJar(filename='stu_cookie.txt')
#
创建一个cookie数据的操作句柄handler
# cookie_handler = urllib2.HTTPCookieProcessor(cookie)
# headers = {
# 'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
# }
创建一个带有cookie信息的opener对象
# opener = urllib2.build_opener(cookie_handler)
#
表单数据要提交到的地址
# post_url = 'http://kaoshi.zhiyou900.com:8888/edustu/login/login.spr'
# post_data = urllib.urlencode({
# 'j_username':'13275975573',
# 'j_password':'123456'
# })
# response = opener.open(post_url, post_data)
#
成功登录之后,将服务器返回的Cookie信息,保存到本地
# cookie.save(ignore_discard=True, ignore_expires=True)
#
# print response.read()
#
cookie = cookielib.MozillaCookieJar()
cookie.load('stu_cookie.txt', ignore_expires=True, ignore_discard=True)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
headers = {
'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
}
request = urllib2.Request('http://kaoshi.zhiyou900.com:8888/edustu/me/edu/index.spr', headers=headers)
response = opener.open(request)
print response.read()
3999

被折叠的 条评论
为什么被折叠?



