requests库简明教程

requests库的简单教程

记录一下实习所学的知识,毕竟啥都不会…

1.requests库的安装

当然是:pip install requests
但是安装的时候可能会出现一些问题:

1.提示连接不上443的问题

一般的话是浏览器设置了代理,直接打开chrome的set选项,然后搜索“代理”,然后下面就会有下图的显示:
requests库简明教程_第1张图片
直接点击黄色的代理,就可以手动关闭代理了。

2.网络加载太慢

建议使用清华源pip
使用方法:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests就好了。

pip 完成之后就可以打开cmd,进入python环境试试import requests,如果没报错就说明安装完成了。

2.requests的原理及get请求

requests库简明教程_第2张图片
小测试1

import requests
r=requests.get(url="http://www.baidu.com")
print(r.text)#打印返回的正文信息
print(r.encoding)#返回的编码方式
print(r.url)#返回url地址
print(r.headers)#返回的消息头
print(r.cookies)#返回的用户辨明信息,cookies
print(r.content)#返回的正文信息,二进制保存

小测试2查询手机归属地(params版本)

import requests
url1="http://tcc.taobao.com/cc/json/mobile_tel_segment.htm" 
#params 参数用字典格式进行保存
params={
     
"tel":15151850963
}
r=requests.get(url=url1,params=params)
print(r.status_code)
print(r.text)
返回:
200
__GetZoneResult_ = {
     
    mts:'1515185',
    province:'江苏',
    catName:'中国移动',
    telString:'15151850963',
	areaVid:'30511',
	ispVid:'3236139',
	carrier:'江苏移动'
}

小测试2查询手机归属地(将参数添加到url中版本)
把参数添加到 url 链接中 ,参数添加url 请求中,url 后面接参数 必须接?号, 多个参数,中用&符号隔开

import requests 
url='http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15151850963' r=requests.get(url=url) 
print(r.text)#打印接口请求返回的值 
print(r.status_code) #打印,接口请求返回的状态码
返回结果:
__GetZoneResult_ = {
     
    mts:'1515185',
    province:'江苏',
    catName:'中国移动',
    telString:'15151850963',
	areaVid:'30511',
	ispVid:'3236139',
	carrier:'江苏移动'
}

200

2.requests POST请求

1,注册接口,数据格式是 data 格式
url 地址:http://106.12.126.197:8000/register
请求方式:post 请求
请求参数:username password
2,登录接口,数据格式是 json 格式
url 地址:http://106.12.126.197:8000/login
请求方式:post 请求
请求参数:username,password

import requests #注册接口 
url_reg="http://106.12.126.197:8000/register" #表单数据格式,参数 data ,数据都是字典去保存 
data={
      "username":"cxy201", "password":"cxy123456" } #发送请求,表单格式的数据,用 data 
r_reg=requests.post(url=url_reg,data=data) 
print(r_reg.text) #打印的正文内容 
print(r_reg.status_code) #打印返回的状态码
#登录接口,数据格式 json 格式 
url_login="http://106.12.126.197:8000/login" 
#json 格式数据,定义值,也是用字典格式保存,json,密码我做了加密处理 
json={
      "username":"cxy201", "password":"7976802034d5eb52010072b6ad7de074" } 
#发送请求,请求用参数 json 
r_login=requests.post(url=url_login,json=json) 
print(r_login.text) 
print(r_login.status_code)

requests库headers处理

部分接口测试过程中,有的接口,需要 headers 产生,如何添加,介绍 headers 产生,比如 是 12306 网站,查询车票的接口

import requests 
url_12306='https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2020-01-08&leftTicketDTO.fro m_station=BJP&leftTicketDTO.to_station=SZQ&purpose_codes=ADULT' 
#需要添加 headers 头信息,需要哪些参数,工作当中可以咨询开发人员,做了哪些判断 
headers={
      'Cookie': 'JSESSIONID=30CC8E3871ABFE0D049CFBDFE7C849A0; RAIL_EXPIRATION=1578732376387; RAIL_DEVICEID=ADc5DllpELgKeqC0fdN8HrKrPeFJTlsstXGY3d4a4MdXOh9f-FpumoK2g0ILTFam9Rr3QB9xGcNxsmau tXJy-ysT294dWUGxfQqiSr4pSPAJsXcfD5-lF6AjQZw8M7ncts3OTnd8FIf6J7CB34_TG4Xjhrn2f0BL; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_toStation=%u6DF1%u5733%2CSZQ;_jc_save_fromDate=2020-01-08; _jc_save_toDate=2020-01-08; _jc_save_wfdc_flag=dc; BIGipServerpassport=988283146.50215.0000; route=c5c62a339e7744272a54643b3be5bf64; BIGipServerotn=2062024970.64545.0000' }
r_12306=requests.get(url=url_12306,headers=headers) 
print(r_12306.content.decode('utf-8'))#打印返回的结果

requests库https请求处理

当协议是 https 的协议的时候,有些系统,需要校验 https 证书,比如携程网的网站

#举例说明,携程网 
 import requests 
 url="https://www.ctrip.com/" 
#解决方案 # 发送请求时候忽略证书,证书的参数 verify-用的比较多  
 r=requests.get(url=url,verify=False)#verify 参数默认为 True,值为 FALSE 表示忽略证书 
 print(r.text) #第二种解决方案,verify 里面添加证书的路径 
 r=requests.get(url=url,verify='证书的路径')#verify 参数默认为 True,值为 FALSE 表示忽略证书 
 print(r.text)

requests 库 cookies 参数

有的接口需要做鉴权处理,用 cookies 来辨明用户信息,需要添加 cookies 参数,比如:添 加地址的接口

import requests url='http://106.12.126.197/fanwe/member.php?ctl=uc_consignee&act=save_consignee&fhash=FYwFvPrwFFajOr qyiayomVMXTkHjJtkqeOgWHMKWaUMUxditJm' 
data={
      'consignee':'cxy002', 'address':'广东省广州市天河区东圃镇万富商业大厦 cxy001', 'mobile':'13112345678', 'ajax':1, 'id':'' } 
#提示请先登录,权限校验的问题,如果直接添加成功,就是一个 bug 
#问题,没有携带用户辨明信息,cookies 
#工作当中,如果接口需要哪些 cookies 值,咨询后端开发人员,只需要 
cookies={
      'PHPSESSID':'q9jfigt47ci0nrma44otg08gk3' } 
#发送接口请求中,如何去添加用户辨明信息,cookies
r=requests.post(url=url,data=data,cookies=cookies) 
print(r.encoding) 
print(r.text.encode('utf-8').decode('unicode_escape'))
#先把返回的结果转换成 utf-8,再去解码成,中文的编 码

你可能感兴趣的:(python,http,request,爬虫)