使用request的优势
-
requests的底层实现就是urllib(更加简单,方便。)
-
requests在python2 和python3中通用,方法完全一样
-
requests简单易用
-
Requests能够自动帮助我们解压(gzip压缩的等)网页内容(urllib需要自动解压)response.status_code (状态码)
response的常用方法
-
response.text r.encoding(观察对方服务器的响应,根据 响应头部的内容,猜测是用的什么编码)
-
r.encoding = “utf-8” 指定编码方式
-
r.content 返回的是没有进行任何修改的bytes类型的字符串 使用r.content.decode()转换成str类型的字符串。
-
response.status_code (状态码)
-
response.request.headers (请求头)response headers 内有Set-cookie ,是服务器发送过来在客户端设置的cookie,也可以通过js设置cookie
-
response.request.url
-
response.headers 响应头
-
response.text 和response.content的区别
-
response.text
-
类型:str
-
解码类型: 根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码
-
如何修改编码方式:response.encoding=”gbk”
-
-
response.content获取的是原始二进制数据
-
类型:bytes
-
解码类型: 没有指定
-
如何修改编码方式:response.content.deocde(“utf8”)
-
-
-
response中编解码的解决
-
response.content.decode("gbk")
-
推荐使用chardet包中detect()函数,获取编码方式,99%确定是GB231编码。但也可能使用的是GBK编码(GBK是GB2312的扩展,由于GBK是向下兼容GB2312,因此你检测到GB2312,则直接用GBK来编码/解码。
-
request发送请求(模拟登陆)
-
模拟登陆1
-
session类,来实现客户端和服务端的会话保持
-
实例化一个session对象session = requests.session()
-
让session发送get或者post请求response = session.get(url,headers)
-
使用session登陆,服务器给浏览器配置cookie,使用带有cooki的session发起get请求
-
-
模拟登陆2
-
cookies字符串放在headers中
-
-
模拟登陆3
-
使用带有cookies的session请求个人主页
-
cookies = {i.split("=")[0]:i.split("=")[1] for i in cookie.split("; ")}
-
requests小技巧
- requests.utils.dict_from_cookiejar(response.cookies)把cookie对象转化为字典
-
request.utils.cookiejar_from_dict({"BDORZ":"1233"})
-
request.utils.unquote(url)解码url地址,将编码的汉字转换回来
-
request.utils.quote(url)编码url地址
-
response = requests.get("https://www.12306.cn/mormhweb/ ", verify=False(验证关闭))请求 SSL证书验证