python爬虫模块cookie(2)和ssl

cookie作为变量打印

"""
- 创立handler后,使用opener打开,打开后相应的业务由相应的hanlder处理
- cookie作为一个变量,打印出来 -案例一

"""

案例一


from urllib import request, parse, error
from http import cookiejar

cookie = cookiejar.CookieJar()
# 创建cookie jar的实例

cookie_handler = request.HTTPCookieProcessor(cookie)
# 生成 cookie的管理器

http_handler = request.HTTPHandler()
# 创建http请求管理器

https_handler = request.HTTPSHandler()
#生成https管理器

opener = request.build_opener(http_handler, https_handler, cookie_handler)
#创建请求管理器

def login():
    '''
    负责初次登录
    需要输入用户名密码,用来获取cookie凭证
    :return:
    '''

    # 此url需要从登录form的action属性中提取
    url = "http://www.renren.com/PLogin.do"

    # 此键值需要从登录form的两个对应的input中提取name属性

    data = {
        "email": '账号',
        "password": '密码'
    }

    # 把数据进行编码
    data = parse.urlencode(data)

    # 创建一个请求对象
    req = request.Request(url, data=data.encode())

    # 使用opener发起请求
    rsp = opener.open(req)

if __name__ == '__main__':
    '''
    执行完login之后,会得到授权后的cookie
    我们尝试把cookie打印出来
    '''
    login()

    print(cookie)
    for it in cookie:
        print(type(it))
        print(it)
        for i in dir(it):
            print(i)

"""
- handler是Handler的实例,常用参数看案例代码
	- 用来处理复杂请求
		- 生成 cookie的管理器
			- cookie_handler = request.HTTPCookieProcessor(cookie)
		- 创建http请求管理器
			- http_handler = request.HTTPHandler()
		- 生成https管理器
			- https_handler = request.HTTPSHandler()
- 创立handler后,使用opener打开,打开后相应的业务由相应的hanlder处理
- cookie作为一个变量,打印出来,案例一
	- cookie的属性
		- name:名称
		- value:值
		- domain:可以访问此cookie的域名
		- path:可以访问此cookie的页面路径
		- exeires:过期时间
		- size:大小
		- Http字段
- cookie的保存-FileCookieJar,案例三
- cookie读取 案例四
"""

Cookie读取写入

案例三 写入


from urllib import request, parse, error
from http import cookiejar

filename = "cookie.txt"
cookie = cookiejar.MozillaCookieJar(filename)
# 创建cookie jar的实例

cookie_handler = request.HTTPCookieProcessor(cookie)
# 生成 cookie的管理器

http_handler = request.HTTPHandler()
# 创建http请求管理器

https_handler = request.HTTPSHandler()
#生成https管理器

opener = request.build_opener(http_handler, https_handler, cookie_handler)
#创建请求管理器

def login():
    '''
    负责初次登录
    需要输入用户名密码,用来获取cookie凭证
    :return:
    '''

    # 此url需要从登录form的action属性中提取
    url = "http://www.renren.com/PLogin.do"

    # 此键值需要从登录form的两个对应的input中提取name属性

    data = {
        "email": '15225771396',
        "password": 'caoheku123'
    }

    # 把数据进行编码
    data = parse.urlencode(data)

    # 创建一个请求对象
    req = request.Request(url, data=data.encode())

    # 使用opener发起请求
    rsp = opener.open(req)

    # 保存cookie到文件
    # ignore_discard表示即使cookie将要被丢弃也要保存下来
    # ignore_expires表示如果该文件中cookie即使已经过期,也保存
    cookie.save(ignore_discard=True, ignore_expires=True)

if __name__ == '__main__':
    login()

案例四 读取


from urllib import request, parse, error
from http import cookiejar


cookie = cookiejar.MozillaCookieJar()
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True) 
# 读取
# 创建cookie jar的实例

cookie_handler = request.HTTPCookieProcessor(cookie)
# 生成 cookie的管理器

http_handler = request.HTTPHandler()
# 创建http请求管理器

https_handler = request.HTTPSHandler()
#生成https管理器

opener = request.build_opener(http_handler, https_handler, cookie_handler)
#创建请求管理器
def gerHomePage():
    url = 'http://www.renren.com/970585682/profile'
    # 如果已经执行了login函数,则opener自动已经包含相应的cookie值
    rsp = opener.open(url)

    html = rsp.read().decode()

    with open("rsp.html", "w", encoding='utf-8') as f:
        f.write(html)
if __name__ == '__main__':
    gerHomePage()

SSL认证模块

"""
- SSL
	- SSL证书是遵守SSL安全套阶层协议的服务器数字证书(SercureSocketLayer)
	- 美国网景公司开发
	- CA(CertifacateAuthority)是数字证书认证中心,是发放,管理,废除数字证书的收信人的第三方机构
	- 案例五

"""

案例五


from urllib import request
# 导入python ssl处理模块
import ssl

# 利用非认证上下文环境替换认证的下文环境
ssl._create_default_https_context = ssl._create_unverified_context

url = "https://www.12306.cn/mormhweb"
rsp = request.urlopen(url)

html = rsp.read().decode()

print(html)

猜你喜欢

转载自blog.csdn.net/weixin_43854835/article/details/89677496