热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonpost请求参数为excel_python网络请求excel读写接口开发(day6)

知识点一、网络请求1.1基础的get请求和post请求处理方式--get请求方式fromurllibimportrequestfromurllibimportparseimport

知识点一、网络请求1.1基础的get请求和post请求处理方式--get请求方式

from urllib import request

from urllib import parse

import json

#get请求

url = 'http://*****'

data = {"stu_name":"xiaohei"}

tmpData = parse.urlencode(data)#将数据变成kv k= v

#接口+参数

tmpUrl= url + '?'+ tmpData

print(tmpUrl)

res = request.urlopen(tmpUrl)

resForRead = res.read()#bytes类型

resString = resForRead.decode()#转换成string类型

print(type(resString))

#想得到返回数据的任意的变量

resForDict = json.loads(resString)#将字符串转成字典

print(resForDict)

1.1基础的get请求和post请求处理方式--post请求方式

from urllib import request

from urllib import parse

import json

url = 'http://****'

data = {"username":'niuhanyang','passwd':'aA123456'}

tmpData = parse.urlencode(data)#将数据变成kv k= v

res = request.urlopen(url,tmpData.encode())# post 请求 参数1 为接口地址 参数2位参数要求bytes

resForRead = res.read()#bytes类型

resString = resForRead.decode()#转换成string类型

print(type(resString))

#想得到返回数据的任意的变量

resForDict = json.loads(resString)#将字符串转成字典

print(resForDict)# post 和 get的区别在与urlopen时,get发的是接口和参数的平成字符串

1.2 使用requests模块优化网络请求的代码

import requests

#get请求

url = 'http://****'

data = {"stu_name":"xiaohei"}

#res = requests.get(url,data).text#text 方法返回的是字符串格式的返回值

res = requests.get(url,data).json()#json 方法返回的是字典格式的返回值

print(res)

print(type(res))

#post 请求

import requests

url = 'http://****'

data = {"username":'niuhanyang','passwd':'aA123456'}

res = requests.post(url,data).text#text 方法返回的是字符串格式的返回值

#res = requests.post(url,data).json()#json 方法返回的是字典格式的返回值

print(res)

print(type(res))

# '''入参是json'''

import requests

url = 'http://****'

data = {"name":"xusu","grade":"一班","phone":18823452345}

res = requests.post(url,json = data ).json()

print(res)

'''COOKIEs'''

import requests

COOKIE = {"niuhanyang":"****"}#查看接口文档,哪个接口返回提供

url = 'http://*****'

data = {"stu_id":1,'gold':10000}

res = requests.post(url,data,COOKIEs = COOKIE).text

print(res)

#header

import requests

url = 'http://****'

header = {'Referer':'http://****/'}

res = requests.get(url,headers = header).text

print(res)

#传文件到服务器上

import requests

url ='http://****'

res = requests.post(url,files = {'file':open('test.py')}).text

print(res)

#小练习

# 提供一个方法 获取到登录后的sign

# 1、请求接口

# 2、获取返回值

# 3、解析取sign

import jsonpath

import requests

def getSign():

url = 'http://api.nnzhp.cn/api/user/login'

data = {"username":'niuhanyang','passwd':'aA123456'}

res = requests.post(url,data).json()

sign = res.get('login_info').get('sign')

print(sign)

Sign = jsonpath.jsonpath(res,'$..sign')#第一个参数访问的对象,第二个参数键值对的key 需要通过$..来定位,返回值是list,需要通过$.. 来定位 如果有目标key,则返回,没有则返回false

print(Sign)

if __name__ == '__main__':

getSign()

d = {

"error_code": 0,

"stu_info": [

{

"id": 314,

"name": "矿泉水",

"sex": "男",

"age": 18,

"addr": "北京市昌平区",

"grade": "摩羯座",

"phone": "18317155663",

"gold": 100,

"cars": [

{"car1": "bmw"},

{"car2": "ben-z"},

]

}

]

}

car2 = jsonpath.jsonpath(d,'$..car1')

print(car2)

1.3 日志

#nnlog

# 提供一个方法 获取到登录后的sign

# 1、请求接口

# 2、获取返回值

# 3、解析取sign

import jsonpath

import requests

import nnlog

log = nnlog.Logger('book_server.log',backCount=5,level='INFO')#实例化,,参数1,log 的保存路径,可以不存在,会自动创建,参数2、backCount保留几个日志,参数3、level默认级别 debug 是最低级别 debug

log.debug('***')#测试程序用

def getSign():

url = 'http://***'

data = {"username":"niuhanyang","passwd":"aA123456"}

res = requests.post(url,data).json() # 通过post方法传递

log.debug(res)

#sign = res.get('login_info').get('sign')#取sign的值

#sign = res[]

sign = jsonpath.jsonpath(res,'$..sign') # 需要通过$.. 来定位 如果有目标key,则返回,没有则返回false

log.info(sign)#上线关注返回值信息

if __name__ == '__main__':

getSign()

1.4 发邮件

qq登录邮箱后,需要进入设置--账户 下开启发送邮件的服务

import yagmail

# username='uitestp4p@163.com' # 发件人的邮箱

username='***.com' # 发件人的邮箱

#password=''#生成授权码,qq、163、126都是授权码 发件人的密码

qq = '***'#qq 需要生成授权码

# mail_server = 'smtp.163.com' # 163的服务

mail_server = 'smtp.qq.com'

# mail_server = 'smtp.126.com'#126服务

m = yagmail.SMTP(user=username,password=qq,host=mail_server)

to = ['**.com'] #发给谁

cc = ['**.com'] #抄送

m.send(to=to,cc=cc, # to 发送给谁,cc 抄送给谁

subject='今天吃了吗',#标题

contents='今天吃鱼肉了吗,吃饱没', #正文

attachments=r'test.py') #附件,多个附件传一个list

知识点二 excel 读写

import openpyxl

#写

book = openpyxl.Workbook()#新建文件

sheet = book.active #默认的sheet

#sheet2 = book.get_sheet_by_name('sheet1')

# sheet.append( ['id','username','password','error_count'])

# sheet.append( [1,'wyj','123456',0])

# sheet.append( [2,'wyj','123456'])

sheet['a1'] = 'id' #指定行列

sheet['b1'] = 'username'#

sheet.cell(3,1,'1')#指定行和列

book.save('user.xlsx')

import openpyxl

#读

book = openpyxl.load_workbook('user.xlsx')

sheet = book.active

# print(sheet.cell(1,1).value)

# print(sheet['a1'].value)

# print(list(sheet.rows)) #所有行的数据

l = []

# print(list(sheet.columns)) #所有列

# for row in sheet.rows:

# t = []

# for col in row:

# t.append(col.value)

# l.append(t)#写

# print(l)

知识点三、接口开发

import flask

import json

import tools

# mock接口开发

# 1、模拟接口的意思

# 2、给别人提供数据

# 3、flask是一个web开发框架

server = flask.Flask(__name__) # 把这个python文件当做一个服务

#

@server.route('/api/login', methods=['post', 'get'])

def login():

username = flask.request.values.get('username') # 从请求里面获取到参数的

password = flask.request.values.get('password')

# flask.request.is_json#是否请求为json

# flask.request.json.get('')#入参是json的话,用这个

d = {'error_code': 1, 'msg': '登录成功', 'username': username, 'password': password}

return json.dumps(d, ensure_ascii=False)

@server.route('/api/pay')

def pay():

d = {'error_code': 1, 'msg': '支付成功'}

return json.dumps(d, ensure_ascii=False)

@server.route('/api/get_bill')

def get_bill():

table_list = ['app_myuser', 'czm']

table_name = flask.request.values.get('table_name')

limit = flask.request.values.get('limit', 50)

if table_name and table_name in table_list:

sql = 'select id,username,passwd from %s limit %s' % (table_name, limit)

result = tools.op_mysql(sql)

data = {'error_code': 0, 'msg': '成功', 'data': result}

else:

data = {'error_code': -1, 'msg': '没有权限查询该表'}

return json.dumps(data, ensure_ascii=False)

server.run(host='0.0.0.0', port=8000, debug=True)#debug = True

#默认情况下,Flask绑定IP为127.0.0.1,端口为5000。我们也可以通过下面的方式自定义:

#app.run(host='0.0.0.0', port=8888, debug=True)

# 0.0.0.0代表电脑所有的IP。



推荐阅读
author-avatar
xiaojin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有