Day03笔记
1. Cookie模拟登录
1. 什么是cookie、session
HTTP协议是一种无连接协议,客户端和服务器狡猾仅仅限于 请求/响应过程,结束后断开,服务器会认为是一个新的客户端,为了维护他们
之间的连接,必须在一个地方保存客户端信息
cookie: 通过在客户端记录的信息确定用户身份
session: 通过服务端记录的信息确定用户身份
2. 案例 : 利用Cookie模拟登陆人人网
1. 一定要先登录成功1次,获取到cookie
2. request模块
1. get(url,params=params,headers=headers)
params: 查询参数,字典,不用编码,也不拼接url
2. 响应对象res的属性
1. encoding : 响应字符编码,res.encoding='utf-8'
2. text : 字符串
3. content : 字节流
4. status_code : 返回Http的响应码
5. url : 返回时就数据的url
3. 非结构化数据存储
html = res.content
with open('xxx','wb')as f:
f.write(html)
4. post(url,data=data,headers=headers)
1. data : Form表单数据, 字典类型,不用编码,不用转码
2. 有道翻译
# 此处data 为Form表单数据
res =requests.post(url,data,headers=headers)
res.encoding ='utf-8'
html = res.text
3. get()方法中不同参数
1. 代理IP(参数名:proxies)
1. 获取代理IP的网站
西刺代理IP
快代理
全网代理
2. 普通代理
1. 格式 :proxies ={"协议":"协议://ip地址:端口号"}
http://httpbin.org/get : 能够显示客户端的headers 和 ip
proxies ={'http':'http://61.135.217.7:80'}
3. 私密代理
1. 格式
proxies ={'http':'http://用户名:密码@IP地址:端口号'}
用户名 :309435365
密码 :szayclhp
ip地址 :116.255.162.107
端口号 : 16816
4. 链家二手房案例(mysql数据库)
1. 找url
2. 正则
3. 写代码
17_链家存mysql.py
5. 链家二手房案例(mongoDB数据库)
16_链家存mongodb.py
2. Web客户端验证(参数名:auth=(元组))
1. auth = ("用户名","密码")
auth =("tarenacode","code_2013")
2. 案例 : 爬取code.tarena目录
1. 步骤
1. URL : http://code.tarna.com.cn
2. 正则 :
<a href=".*?">(.*?)</a>
3. 写代码
3. SSL证书认证(参数名:verify=True | False)
1. verify = True : 默认,进行SSL证书认证
2. verify = False : 不做认证
4. urllib.request中Handler处理器
1. 定义
自定义的urlopen()方法,因为模块自带的urlopen不支持代理等功能,通过Handler处理器自定义
urlopen方法
2. 常用方法
1. opener = build_opener(某种功能的Handler处理器对象)
2. opener = open(url)
3. 使用流程
1. 创建相关的Handler处理器对象
2. 创建自定义opener对象
3. 利用opener对象的open方法发请求获响应
4. Handler处理器分类
1. HTTPHandler : 没有特殊功能
2. ProxyHandler({普通代理}) : 普通代理
代理格式: {"协议":"http://ip端口号"}
3. ProxyBasicAuthHandler(密码管理器对象)
4. HTTPBasicAuthHandler(密码管理器对象)
5. 密码管理器用途
1. 私密代理
2. Web客户端认证
3. 程序实现流程
1. 创建密码管理器对象
pwdmg = urllib.request.HTTPPasswordMgrWithDefaultRealm()
2. 把认证信息添加到对象里面去
pwdmg.add_password(None,Webserver,user,password)
3. 创建Handler处理器对象
proxy_handler = urllib.request.ProxyBasicAuthHandler(pwdmg)
4. 创建自定义opener对象
opener = urllib.request.build_opener(proxy_handler)
5. 利用opener对象的open方法发送请求获取响应
res = urllib.request.Request(url,headers=headers)
res = opener.open(req)