requests库

1.requests简介
requests库是用python编写的基于urllib,requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用
警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡

2.requests库的安装
命令提示符中输入 pip install requests
requests库_第1张图片
3.requests库基本使用方法
3.1导入库:import requests
3.2发送请求:response = requests.get(‘url’)
3.3获取网页数据:print(response.text)
说明:
常见的请求方法有:
requests.get(‘url/get’)
requests.post(‘url/post’)
requests.put(‘url/put’)
requests.head(‘url’)

4.requests.get()访问方式
4.1说明:get方式请求数据
4.2格式:
requests.get(
url, # 请求的url
headers,#请求头信息
params, #get请求参数
data, #post请求参数
cookies,#用户身份数据
auth, #用户权限认证
files, #文件上传
timeout,#设置超时
proxies,#设置代理ip
verify #
)
4.3参数说明
4.3.1url:get方式请求的地址
4.3.2headers:可以用这个字段来定义http的访问的http头,可以用来模拟任何import requests我们想模拟的浏览器来对url发起访问。
headers = {
‘User-Agent’:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’
}
response = requests.get(url,params=data,headers=headers)
4.3.3params: get请求参数, url中的额外参数,字典或者字节流格式。使用这个参数可以把一些键值对以key1=value1&key2=value2的模式增加到url中
格式举例:
data = {
‘year’: ‘y’,
‘area’: ‘global’,
‘type’: ‘MovieRankingYear’,
#‘category’: ‘all’,
‘page’: j,
‘dataType’: ‘json’
}
4.3.4data: post请求参数,字典格式存储post请求参数
4.3.5cookies:https://baike.so.com/doc/3766187-3956334.html
(1)简介:字典或CookieJar,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
(2)产生:由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)
(3)用途:服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。
(4)典型用途:1)判定注册用户是否已经登录网站,
2)是对“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息
4.4proxies:(代理)
4.4.1ip代理:上网用的协议是TCP/IP协议,也就是说你必须有一个IP地址才能访问互联网,上网所必须的每个人的IP地址是唯一的。代理IP呢就是一个跳板,就是说本机先访问代理IP,然后通过代理IP地址去访问互联网,这样记录的就是你设置的这个代理的IP地址。
4.4.2分类:
1)根据用途分类:
正向代理:通过代理ip替客户端向服务端请求数据的代理。
反向代理:将服务器根据地点不同建立多个子服务器,用户访问相同内容时,子服务器根据访问者位置以代理服务器提供数据
查询ip的方法:在搜索引擎中输入“ip”
4.4.3根据代理权限分:
1)透明代理:对方服务器知道用户使用了代理,且知道用户真实ip
2)匿名代理:对方服务器可以知道用户使用了代理,但不知道真实ip
3)高匿名代理:对方服务器不知道用户使用代理和真实ip
代理网站: https://www.kuaidaili.com/free/
西刺代理,快代理……
验证工具:
花刺代理
4.5p代理配置方法:
4.5.1浏览器配置:
浏览器——设置——高级——代理设置——“局域网设置”——代理服务器——将ip与port写入——确定
4.5.2在花刺代理软件中点击”设为IE代理”设置
1)设置代理,将ip代理以字典形式存储
requests库_第2张图片
2)在向服务器发送请求时设置get/post中的proxies参数
在这里插入图片描述
4.6response属性
response.text:获取相应网页的字符串信息,会自动根据响应头部字符编码进行解码。
response.content:以字节方式获取网页内容(二进制获取)
response.url:请求的url
response.status_code:获取网页响应的状态码
response.reason:获取状态码返回的信息
response.headers:获取响应的头部信息
response.encoding:获取网页编码
response.cookies:获取网页的cookie
response.request.headers/url/method:获取请求信息

5.知识补充
5.1.1Session:http://www.elecfans.com/emb/580058.html
Session:在网络中成为“会话控制”,是在服务端存储的用户身份登录信息或用户浏览 Web应用程序时需要的其它信息
requests库_第3张图片
5.1.1使用方法:
(1)创建一个session对象 s = requests.Session()
(2)通过session对象向服务器发送请求:
response = s.get/post(url,headers,params,data,cookie……)
(3)也可以使用session对象获取cookie信息:
s.cookies
5.2headers中参数说明
5.2.1General部分:
Request URL:资源的请求url
Request Method:HTTP方法
Status Code:响应状态码
5.2.2Response Headers:
1)Content-Encoding:gzip ——压缩编码类型
2)Content-Type:text/html ——服务端发送的类型及采用的编码方式
3)Date:Tue, 14 Feb 2017 03:38:28
4)GMT ——客户端请求服务端的时间
5)Last-Modified:Fri, 10 Feb 2017 09:46:23
6)GMT ——服务端对该资源最后修改的时间,GMT是格林尼治标准时间
7)Server:nginx/1.2.4 ——服务端的Web服务端名
8)Transfer-Encoding:chunked ——分块传递数据到客户端
5.2.3Request Headers:
1)Accept:text/html ——客户端能接收的资源类型
2)Accept-Encoding:gzip, deflate ——客户端能接收的压缩数据的类型
3)Accept-Language:en-US,en;q=0.8 ——客户端接收的语言类型
4)Cache-Control:no-cache ——服务端禁止客户端缓存页面数据
5)Connection:keep-alive ——维护客户端和服务端的连接关系
6)Cookie: ——客户端暂存服务端的信息
7)Host:www.jnshu.com ——连接的目标主机和端口号
8)Pragma:no-cache ——服务端禁止客户端缓存页面数据
9)Referer:http://www.jnshu.com/daily/15052 ——来于哪里
10)User-Agent: ——客户端版本号的名字
5.3cookie应用
5.3.1身份认证
思路:
1)通过服务器对用户请求在服务端创建
Session对象
2)Session向客户端发送cookies
3)客户端携cookies再向服务端请求数据
5.3.2模拟登录
5.4验证码
打码:数据录入工作。
验证码打码:是一种区别用户是计算机还是人的公共全自动程序
常见的打码方式:
5.4.1肉眼打码:对于登录一次就可以长时间使用的网站,可通过人为肉眼识别验证码从而输入进行登录
方式:
1).借助浏览器:通过cookies实现绕过登录(滑块验证使用较多)
2).不借助浏览器:获取验证码图片,通过肉眼对图片中的验证码识别,将识别结果填入post参数部分
思路:
1)找到验证码所对应的url
2)通过url向服务器发送请求
3)由于图片文件是二进制保存,所以使用content获取文件
4)将图片存储再外部文档中
5.4.2自动打码
通过python第三方库对验证码图片中的内容进行自动识别。
第三方库:
pytesseract:该库配合图像识别引擎tesseract可将图片中的文字转换为文本。
Pillow:python中转码处理图像的第三方库
使用方法:
1)安装tesseract:https://digi.bib.uni-mannheim.de/tesseract/
2)安装pytesseract和Pillow:pip install xxx
3)修改pytesseract.py文件(site-packages)如下:
将tesseract_cmd=‘tesseract’修改为
tesseract_cmd=‘tesseract路径’
5.4.3步骤:
(1)导入相应的模块
import pytesseract
from PIL import Image
(2)打开外部验证码图片文档
image = Image.open('yzm.png’)
(3)调用pytesseract库中imgae_to_string()方法进行识别
code = pytesseract.image_to_string(image)
(4)打印查看结果
print(code)

你可能感兴趣的:(python)