网络请求
import requests
#get请求 url='http://img.xiumi.us/xmi/ua/17O3K/i/07efe34c090c4552078daea32d7ebc3a-sz_153856.jpg?x-oss-process=image/resize,w_1080/auto-orient,1/crop,x_0,y_0,w_720,h_587' d = {'stu_name':'矿泉水2'} r = requests.get(url,d)#发get请求 print('r.json',r.json() ) #返回的是一个字典 print('r.text',r.text)#返回的是一个字符串 print('r.content',r.content)#返回的是bytes类型 fw = open('sfsdfs.jpg','wb') fw.write(r.content) fw.close()
#post请求 url='http://api.nnzhp.cn/api/user/login' data = {'username':'niuhanyang','passwd':'aA123456'}#有多少key就写多少参数 r = requests.post(url,data) print(r.json())
# 传cookie、header url='https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list' d = {'bkn': 1179529977} # cookie = {' tvfe_boss_uuid': '3a12ac91bd08d69c', ' pgv_pvid': '6758068840', ' pgv_pvi': '9797262336', ' RK': '1b4JBYR9aB', ' ptcz': '1056d2f367035d64d7b3e34b291bbe1d9c570081bf12a79eb1be0c574516c5fa', ' sd_userid': '35011558945432940', ' sd_cookie_crttime': '1558945432940', ' ptui_loginuin': '458727764@qq.com', ' o_cookie': '458727764', ' pac_uid': '1_458727764', ' pgv_si': 's2287503360', ' logout_page': '', ' uin': 'o0525586735', ' ptisp': 'cnc', ' skey': '@U8V4AaETp', ' p_uin': 'o0525586735', ' pt4_token': '4QVJFLPA7QXrB3Up6AvUUxz3PC1gAqygUoTinU1nC1g_', ' p_skey': 'GAX6P8UCl50rbNL6q-c6gok9l08LCe5pFysGs-y3PJM_', ' traceid': '3a69c2822e', ' ts_last': 'qun.qq.com/member.html', ' ts_uid': '6279869462'} header = {'cookie':'pgv_pvi=7661869056; RK=KRZhhBpcbw; ptcz=aaeb20d1e9557251855ed7cb94a52a5e4a0868151f2f4a99de4397e5d901cc3b; uin=o0511402865; ptisp=cnc; pgv_si=s8267628544; skey=@YGZhPn1yj; p_uin=o0511402865; pt4_token=iRNGXHEgTDZlLvIMwPRm4BJq3L0A*Z8xEMVpeTal*vs_; p_skey=pgPUHTMEhWz5fG0iZZ2O1BC1oqxg7R-iN8wpSlMOB*o_; traceid=38d9de77e4'} r = requests.post(url,d,headers = header) print(r.json()) pgv_info=ssid=s1631281820;#在参数中异常报错,单独赋值
#上传文件 url= 'http://api.nnzhp.cn/api/file/file_upload' r = requests.post(url,files={'file':open('jjj.jpg','rb')}) print(r.text)
#传session url='http://api.nnzhp.cn/api/user/stu_info' session = requests.session() r1 = session.get(url,params={'stu_name':'矿泉水'}) r2 = session.post(url,data={'stu_name':'矿泉水'}) print(r1.json())
#session 能自动管理cookie r= session.post('http://api.nnzhp.cn/api/user/login', data={'username':'niuhanyang','passwd':'aA123456'})
session.post('http://api.nnzhp.cn/api/user/pay') session.post('http://api.nnzhp.cn/api/user/order') #都可以使用login接口的session
redis
import redis
定义:关系型数据库
import redis r = redis.Redis(host='118.24.3.40',password='HK139bc&*', db=15,decode_responses=True) #db 0-16 r.set('name','123456')#key不能重复k,v
操作#string类型-1
r.set('jjj_session','sdfsgfsgdfs',60)#60为此数据失效时间 r.set('xiaoming','11')#set数据 print(r.get('nick').decode()) #获取数据(字符串类型) r.set('xiaoming','11')#修改数据 r.delete('xiaoming') #删除某个key
r.set('cnz_user:jiajinju','123456')#【:】为文件夹名cnz_user,表名jiajinju
操作#string类型-2
r.flushdb() #清除redis里面所有的key r.flushall()#清除所有数据库里面所有的key print(r.keys('*xx')) #获取当前数据库里面所有的key,也有过滤的功能 print(r.exists('jjj2'))#判断这个key是否存在,存在就返回1,不存在就返回0
操作#hash类型 r.hset('cnz_user','liuzhao','123456')#增加数据 r.hset('cnz_user','jiangchuan','123456') r.hset('cnz_user','jiangchuan','45678') #修改 r.hdel('cnz_user','jiangchuan') #删除里面的小key r.delete('cnz_user') #删除大key print(r.hget('cnz_user','liuzhao')) #获取指定key print(r.hgetall('cnz_user')) #取到key里面所有的key和value r.hmset('cnz_user',{"guoyanan":"123456","xiaojun":"456789"}) #批量set进去 print(r.type('cnz_user')) print(r.type('xx_:1:x iaohei')) r.expire('cnz_user',60) #设置失效时间
例子1:
# reg()
# login()
#1、username,password,密码要存密文的
#2、要校验用户,如果用户不存在的话,才可以注册
import redis r = redis.Redis(host='118.24.3.40',password='HK139bc&*', db=15,decode_responses=True) #db 0-16,decode让密码统一格式 import hashlib def reg(): username = input('username:').strip() password = input('password:').strip() if r.get(username): print('用户已存在!') else: m = hashlib.md5(password.encode()) new_password = m.hexdigest() r.set(username,new_password) print('注册成功!') def login(): username = input('username:').strip() password = input('password:').strip() p = r.get(username) if p: m = hashlib.md5(password.encode()) new_password = m.hexdigest() if p == new_password: print('登录成功!') else: print('密码错误!') else: print('用户不存在!')
例子2:
#a redis => b redis
#连上两个redis a b
#1、从a redis里面获取到所有key
#2、然后在从a里面取到key的value,set到b里面
import redis a = redis.Redis(host='118.24.3.40',password='HK139bc&*', db=15,decode_responses=True) #0-16 b = redis.Redis(host='118.24.3.40',password='HK139bc&*', db=10,decode_responses=True) #0-16 for k in a.keys(): if a.type(k) == 'string': value = a.get(k) b.set(k,value) elif a.type(k) == 'hash': all_data = a.hgetall(k) b.hmset(k,all_data) else: print('其他类型不支持!')
接口开发
import flask
作用
1、mock(模拟)接口
2、给别人提供数据
flask 是web开发框架
import flask import json server = flask.Flask(__name__)#启动一个服务端 @server.route('/index')#装置器 def login(): d = {"code":0,"msg":"登录成功 niuhanyangq111!"} return json.dumps(d,ensure_ascii=False) server.run(host='0.0.0.0',port=8989,debug=True)#访问