语雀同步文档 | Github项目仓库
国内部分地区局域网可能无法正常显示github插图,请跳转语雀同步文档
4C 中国大学生计算机设计大赛 历史作品博物馆
收集 | 展示 | 赏析 | 学习 | 输出
同质idea
以及同质优秀参赛作品
进入main.py
,按照说明书合理调用API
,运行程序即可调度爬虫采集数据。
环境预备
./MiddleWare/chromedriver.exe
,请将宁的谷歌浏览器更新到最新版本。安装第三方依赖
在工程文件中打开Terminal
;
# 更新pip
python -m pip install --upgrade pip
# 通过依赖文档,批量索引第三方库;部分包可能需要手动安装
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
app.run_crawl_to_capture_workData(work_id: str or list,power: int)
work_id
,则默认采集BASE中所有的ID对应的作品数据(目前有4076个数据在库),此时请适当调高协程功率power∈[1,∞)
,脚本内置弹性协程队列,此处可随意
设置/dataBase/
目录下生成合成.csv
文件config
配置文件中打印变量title
即可查询信息键from MiddleWare import app
from config import *
if __name__ == '__main__':
id_list = ['75945','68589']
# app.run_crawl_to_capture_workData(work_id='72862',power=30)
app.run_crawl_to_capture_workData(id_list, id_list.__len()__)
app.run_crawl_to_capture_workData(work_id: str or list,power: int=4)
power∈[1,∞)
,脚本内置弹性协程队列,此处可随意
设置/dataBase/BACKUP/
目录下生成以作品编号命名的.mhtml
文件,该格式网页文件封装了源所有的文本及插图附件,部分作品内容精彩,文件体积占用较大。
from MiddleWare import app
from config import *
if __name__ == '__main__':
# 话说这个id作品好赞...开眼了..来自华科大佬的神仙作品 tql!!
app.run_crawl_to_backup_workData('72862',power=1)
在从MiddleWare
中导入app
,即可调用脚本功能,别忘了调用config
配置文件设置全局变量~
from MiddleWare import app
from config import *
app.get_school_psar(school_name: str,save: bool)
/dataBase/PSAR
目录下生成对应学校的分析结果,文件格式为.json
,信息键仅包括获奖信息
以及作品链接
。文件会自动打开。from MiddleWare import app
from config import *
if __name__ == '__main__':
app.get_school_psar(school_name='华中科技大学',save=True)
/华中科技大学_分析报告.json
{
"华中科技大学": {
"成果概要": {
"一等奖": 2,
"二等奖": 8,
"三等奖": 2
},
"作品细节": {
"一等奖": [
{
"http://2020.jsjds.com.cn/chaxun/?keys=72849": "皖江之阴,青山之阳;青阳有腔,放遇一欢。"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72862": " 红楼梦·可视化赏析信息交互系统"
}
],
"二等奖": [
{
"http://2020.jsjds.com.cn/chaxun/?keys=72750": "Limfx科研博客"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72764": "梦·山海"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72795": "济世方舱"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72796": "山哈彩带"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72800": "敦煌·梵音"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72821": "放大镜下的昆虫世界"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72822": "九华折扇——数字化非遗文化信息可视化设计"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=74879": "别让它灭绝"
}
],
"三等奖": [
{
"http://2020.jsjds.com.cn/chaxun/?keys=72783": "皮影传承,戏中人生"
},
{
"http://2020.jsjds.com.cn/chaxun/?keys=72799": "希冀"
}
]
}
}
}
app.find_works_by_level(level: str,class_: str)
一等奖
、二等奖
、三等奖
/dataBase/TPTDP/class_name.txt
中有C4-2020所有赛道的全称level
和class_
都不是必选参数,比如只想知道一等奖的所有作品,只需传入level
即可,class_
可不传或传入空字符串。from MiddleWare import app
from config import *
if __name__ == '__main__':
# app.find_works_by_level(level='一等奖', class_='大数据')
# app.find_works_by_level(level='', class_='人工智能')
app.find_works_by_level(level='一等奖', class_='')
app.find_works_by_id(key: str, goto: bool)
/dataBase/PSAR/ASH.json
中留下临时文件from MiddleWare import app
from config import *
if __name__ == '__main__':
app.find_works_by_id('72862')
spider_key
,即可获取含表头的在库id列表。获取列表后使用切片去除表头候即可获得干净的数据~csv.field_size_limit()
捕获数据流。函数源码如下:
# config.py
def load_data_from_id_set(mode) -> list:
"""
data_set = title
:param mode: 截取模式,
spider_key : 联采
str:works_id : 该作品编号对应的数据
list:works_id :
:return:返回表头+数据,使用切片[1:]截出数据集
"""
# 当爬虫程序使用此函数时,并传入‘spider_key’口令,函数执行特殊命令,返回含表头的作品编号 List[str,str...]
# 返回的列表里包含了所有在库的works_id,既当爬虫爬虫程序传入该口令时,将采取所有作品信息
with open(id_fp, 'r', encoding='utf-8') as f:
csv.field_size_limit(500 * 1024 * 1024)
reader = csv.reader(f)
data = [i for i in reader]
if mode == 'spider_key':
# 清洗数据
return [i[1] for i in data if i[1] != 'N/A']
from MiddleWare import app
if __name__ == '__main__':
# 返回无表头 id 列表
id_flow: list = app.get_all_works_id()
# 数据预览
print('id池大小:{}'.format(id_flow.__len__()))
/dataBase
目录下存放了脚本核心BASE文件,请勿随意挪动或删除文件,否则会出大问题!config.py
中可以自己调整的参数并不多,请勿随意改动其中数值,否则也会出大问题~2020-MTH作品申报信息
离线封装app.py
里,所有功能都可通过该模块调用