记录一下实习所学的知识,毕竟啥都不会…
当然是:pip install requests
啦
但是安装的时候可能会出现一些问题:
一般的话是浏览器设置了代理,直接打开chrome的set选项,然后搜索“代理”,然后下面就会有下图的显示:
直接点击黄色的代理,就可以手动关闭代理了。
建议使用清华源pip
使用方法:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
就好了。
pip 完成之后就可以打开cmd,进入python环境试试import requests,如果没报错就说明安装完成了。
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
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)
部分接口测试过程中,有的接口,需要 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'))#打印返回的结果
当协议是 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)
有的接口需要做鉴权处理,用 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,再去解码成,中文的编 码