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



推荐阅读
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 本文详细介绍了Apache Spark 2.2.0版本中集群模式的基本概念和工作流程,包括如何通过集群管理器分配资源,以及Spark应用程序在集群中的运行机制。链接:http://spark.apache.org/docs/2.2.0/cluster-overview.html ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • WebBenchmark:强大的Web API性能测试工具
    本文介绍了一款名为WebBenchmark的Web API性能测试工具,该工具不仅支持HTTP和HTTPS服务的测试,还提供了丰富的功能来帮助开发者进行高效的性能评估。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
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社区 版权所有