因为工作的需要,要在网页上添加很多学员的信息,但是公司审计不让直接导入数据库,而且开发也没有涉及批量上传的功能,只好自己动手用Python写了一个批量创建学生信息的程序。
实现思路:
我们首先看我们需要填的表格样式如下:
需要我们选择的类型,姓名 ,性别是必填的,备注是选填的,我们可以通过填写一个数据然后F12,查看Network 下的 headers获取到提交数据的网址 url 和提交的表单数据 Form Data 和 headers 所需要的user-agent 、content-type、cookie
通过查看Form Data 我们知道了需要提交的数据,下面就是写代码了,代码如下:
import requests;
import json;
url ="获取到的提交数据的网址"
putcookie=input("cookie输入:") #不断在变的cookie用录入的方式获取
mycookie =putcookie
#提交所需要的头:包含content-type,user-agent和cookie
myheaders ={
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
"cookie":mycookie}
#获取到的Form Data 如下:
# id:
# person_type:
# name:
# sex:
# remark:
#所以提交的数据样式应该为{"id": '', "person_type":"", "name": "","sex":, "remark":"" }
#有时候id 或者是 性别可能是 数字类型的也可能是 字符类型的这个可以多尝试下
str = {
"id": '', "person_type": 2, "name":name , "sex":sex , "remark": remark}
#上面的name sex remark是从excel表格中获取到的不是死数据,测试时可以写死
#提交
r = requests.post(url, data=str, headers=myheaders)
#获取返回的结果
print(r.text)
这是一个数据提交的方法,接下来只需要从excel 文件中读取表格数据对应的赋值给name,sex,remark 就可以了,因为这些人员的类型都一样,所以person_type这里我写死了,如果是不一样的也可以从表中读取。
最终大致代码如下:
import requests;
import json;
import openpyxl;
wb =openpyxl.load_workbook("你的文件的名字.xlsx") #这里不固定的话也可通过控制台录入获取,我写死了
print(wb.active) # 看当前是哪个工作簿防止选错了
sheet=wb.active #就选择当前的工作簿
url ="获取到的提交数据的网址"
putcookie=input("cookie输入:") #不断在变的cookie用录入的方式获取
mycookie =putcookie
#提交所需要的头:包含content-type,user-agent和cookie
myheaders ={
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
"cookie":mycookie}
#这个方法就是循环读取数据然后提交我设置的是10个数据这样可以检查发现错误及时改
def writemsg():
for i in range(10):
name= sheet.cell(row=i+2, column=1).value #第1列 第2行因为i是从0开始的。row是行column是列
sex=sheet.cell(row=i+2, column=4).value #这个表格可以自行修改,数据在哪就设置那块
remark=sheet.cell(row=i+2, column=5).value
print(studentname,sex,remark) #打印看看
str = {
"id": '', "person_type": 2, "name":name , "sex":sex , "remark": remark}
r = requests.post(url, data=str, headers=myheaders)
print(r.text)
if __name__ == '__main__':
writemsg()
最后只需要修改excel表格就可以把数据分批次上传了,运行程序前,excel 要保存下,否则读不到修改后的数据哦。