热门标签 | 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。



推荐阅读
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
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社区 版权所有