使用JS和Python从网页html导出excel名单

本文最后更新于:8 个月前

在审核暑假留校申请(学生工作)时,有一个需要导出名单的需求,但是系统上没有该功能,为了提高工作效率,尝试在浏览器控制台操作DOM对象,结合正则表达式成功获取到了所需名单,并通过Blob对象包裹目标字符串,成功下载txt文件

网上办事大厅获取名单

浏览器控制台

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//第一步,获取目标字段
var arr = document.querySelectorAll('.sx_pa')
data = Array.from(arr)

//第二步,筛选符合条件(申请留校)的数据
realData = data.filter(item=>{
let reg = /^寒暑假留校申请.*/g;
return reg.test(item.outerText);
})

//第三步,将名字提取出来,拼接成字符串(用逗号隔开)
let result = ""
realData.map(item=>{
let str = item.outerText;
let index1 = str.indexOf('_');
let index2 = str.indexOf('_',index1+1);
let res = str.slice(index1+1,index2);
result += ',' + res;
})
result = result.slice(1)

//第四步,用Blob对象包裹目标字符串,以URL的形式下载文件
var blob = new Blob([result]);
var virtualLink = window.document.createElement('a');
virtualLink.href = URL.createObjectURL(blob);
virtualLink.download = '名单';
window.document.body.appendChild(virtualLink);
virtualLink.click();
window.document.body.removeChild(virtualLink);

Python

1
2
3
4
5
import pandas as pd

data = pd.read_table('名单.txt',sep=',',header=None)
result = data.T
result.to_excel('办事大厅申请留校名单.xlsx',index=False)

合并两张Excel表

依据:某一栏的相同内容

1
2
3
4
5
6
7
import pandas as pd

realInSchool = pd.read_excel('2019级宿舍在校人员统计(7月13日).xlsx')
applyStay = pd.read_excel('办事大厅申请留校名单.xlsx')

res = pd.merge(realInSchool,applyStay,on='姓名',how='outer')
res.to_excel('在校+申请留校合并统计.xlsx',index=False)

使用JS和Python从网页html导出excel名单
http://timegogo.top/2022/07/14/项目实践/使用JS和Python从网页html导出excel名单/
作者
丘智聪
发布于
2022年7月14日
更新于
2023年7月16日
许可协议