公司找外包公司做了个大学生创新大赛作品上传及报名系统,但是离谱的是,活动结束后外包公司就把服务器关停了。参数数据及作品文件都无法下载。于是协商这个公司把服务器启动两天,等我们下载完了,再关停。
由于没有自动导出功能,于是我写了个 python 程序做了自动下载。
处理逻辑
- [x] 在浏览器中,抓取数据请求。调整参数,一次性获取所有数据的 json 格式
- [x] json 数据保存到本地文件
- [x] python 读取 json 文件,参照网站上的字段顺序进行解析。并保存成 csv 文件
- [x] 使用 wps 新建 Excel 表格文件,通过数据导入功能,将 csv 文件导入。注意设置分隔符,字段类型。可以规避身份证数据被展示成科学计数法
- [x] 文件保存
- [x] 用 python 拼接出文件下载链接,再构造成 curl 命令。批量写入本地 shell 文件
- [x] 执行 shell 文件进行 pdf,视频文件的批量下载
- [x] 文件名中的斜杠需要剔除
- [x] 不同文件类型独立目录
curl 自定义下载文件名
curl -L "http://www.sunzhongwei.com/download.do?fileCode=60abb8cea8d3fd5b1398b7a5" --output "python入门.pdf"
python 解析 json 导出 csv 示例
#!/usr/bin/env python3
import json
import csv
if '__main__' == __name__:
print("Hello world!")
rows = []
with open('student.json') as f:
data = json.load(f)
items = data["data"]
for item in items:
rows.append([
item["student_name"],
item["student_grade"],
item["student_mobile"],
item["student_email"],
"队长" if item["is_team_leader"] else "",
])
print(rows)
with open("student.csv", 'w', newline='') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
for row in rows:
wr.writerow(row)
python 生成批量下载文件 shell 示例
#!/usr/bin/env python3
import json
import csv
if '__main__' == __name__:
print("Hello world!")
rows = []
with open('product.json') as f:
data = json.load(f)
items = data["data"]
commands = []
for item in items:
fileCode = item["filecode"]
if fileCode:
command = 'curl -L "http://www.sunzhongwei.com/download.do?fileCode=' + fileCode + '" --output "' + fileCode + '_' + item["filename"].replace("/", "") + '.pdf"'
commands.append(command)
with open('product_ips.sh', 'a') as the_file:
for command in commands:
the_file.write(command + "\n")
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式