Python爬虫之cookie的获取保存和使用新手必学
Posted 程序员的人生A
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫之cookie的获取保存和使用新手必学相关的知识,希望对你有一定的参考价值。
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:huhanghao
Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登陆前与登陆后是不同的,或者不允许的。另外如果你刚学不久。对这方面还不熟,建议先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,多跟里面的人交流,比自己摸索效率更高哦!
在python中它为我们提供了cookiejar模块,它位于http包中,用于对Cookie的支持。通过它我们能捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
## cookie的获取
# -*- coding: UTF-8 -*-
from urllib import request
from http import cookiejar
if __name__ == \'__main__\':
#声明一个CookieJar对象实例来保存cookie
cookie = cookiejar.CookieJar()
#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
handler=request.HTTPCookieProcessor(cookie)
#通过CookieHandler创建opener
opener = request.build_opener(handler)
#此处的open方法打开网页
response = opener.open(\'http://www.baidu.com\')
#打印cookie信息
for item in cookie:
print(\'Name = %s\' % item.name)
print(\'Value = %s\' % item.value)
cookie的文件保存
# -*- coding: UTF-8 -*-
from urllib import request
from http import cookiejar
if __name__ == \'__main__\':
#设置保存cookie的文件,同级目录下的cookie.txt
filename = \'cookie.txt\'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookiejar.MozillaCookieJar(filename)
#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
handler=request.HTTPCookieProcessor(cookie)
#通过CookieHandler创建opener
opener = request.build_opener(handler)
#此处的open方法打开网页
response = opener.open(\'http://www.baidu.com\')
#保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)
加载保存的cookie,并进行网页访问
# -*- coding: UTF-8 -*-
from urllib import request
from http import cookiejar
if __name__ == \'__main__\':
#设置保存cookie的文件的文件名,相对路径,也就是同级目录下
filename = \'cookie.txt\'
#创建MozillaCookieJar实例对象
cookie = cookiejar.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load(filename, ignore_discard=True, ignore_expires=True)
#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
handler=request.HTTPCookieProcessor(cookie)
#通过CookieHandler创建opener
opener = request.build_opener(handler)
#此用opener的open方法打开网页
response = opener.open(\'http://www.baidu.com\')
#打印信息
print(response.read().decode(\'utf-8\'))
这里对cookie的使用类似于,之前我们用到的对代理的使用。
加载cookie,实现网站的登录
# -*- coding: UTF-8 -*-
from urllib import request
from urllib import error
from urllib import parse
from http import cookiejar
if __name__ == \'__main__\':
#登陆地址
login_url = \'http://www.jobbole.com/wp-admin/admin-ajax.php\'
#User-Agent信息
user_agent = r\'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36\'
#Headers信息
head = {\'User-Agnet\': user_agent, \'Connection\': \'keep-alive\'}
#登陆Form_Data信息
Login_Data = {}
Login_Data[\'action\'] = \'user_login\'
Login_Data[\'redirect_url\'] = \'http://www.jobbole.com/\'
Login_Data[\'remember_me\'] = \'0\' #是否一个月内自动登陆
Login_Data[\'user_login\'] = \'********\' #改成你自己的用户名
Login_Data[\'user_pass\'] = \'********\' #改成你自己的密码
#使用urlencode方法转换标准格式
logingpostdata = parse.urlencode(Login_Data).encode(\'utf-8\')
#声明一个CookieJar对象实例来保存cookie
cookie = cookiejar.CookieJar()
#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
cookie_support = request.HTTPCookieProcessor(cookie)
#通过CookieHandler创建opener
opener = request.build_opener(cookie_support)
#创建Request对象
req1 = request.Request(url=login_url, data=logingpostdata, headers=head)
#面向对象地址
date_url = \'http://date.jobbole.com/wp-admin/admin-ajax.php\'
#面向对象
Date_Data = {}
Date_Data[\'action\'] = \'get_date_contact\'
Date_Data[\'postId\'] = \'4128\'
#使用urlencode方法转换标准格式
datepostdata = parse.urlencode(Date_Data).encode(\'utf-8\')
req2 = request.Request(url=date_url, data=datepostdata, headers=head)
try:
#使用自己创建的opener的open方法
response1 = opener.open(req1)
response2 = opener.open(req2)
html = response2.read().decode(\'utf-8\')
index = html.find(\'jb_contact_email\')
#打印查询结果
print(\'联系邮箱:%s\' % html[index+19:-2])
except error.URLError as e:
if hasattr(e, \'code\'):
print("HTTPError:%d" % e.code)
elif hasattr(e, \'reason\'):
print("URLError:%s" % e.reason)
以上就是本期讲的内容,另外如果你对这方面还不熟,刚学不久,建议先去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,多跟里面的人交流,比自己摸索效率更高哦!
以上是关于Python爬虫之cookie的获取保存和使用新手必学的主要内容,如果未能解决你的问题,请参考以下文章