网络请求

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)#访问