PSP2.2 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 855 | 820 |
· Analysis | · 需求分析 (包括学习新技术) | 300 | 400 |
· Design Spec | · 生成设计文档 | 30 | 15 |
· Design Review | · 设计复审 | 15 | 15 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 15 |
· Design | · 具体设计 | 60 | 45 |
· Coding | · 具体编码 | 300 | 300 |
· Code Review | · 代码复审 | 60 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 30 |
Reporting | 报告 | 100 | 60 |
· Test Repor | · 测试报告 | 60 | 30 |
· Size Measurement | · 计算工作量 | 20 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 20 |
· 合计 | 985 | 910 |
我一共将这次的爬虫作业分为了八个环节,分别是:爬取网站-爬取文本-处理文本-获取数据-处理数据-导出数据-每日热点-数据可视化。本次作业的各个环节我主要使用了python在pycharm软件下,并且使用了一些html来作为数据可视化的基础。
- 首先,我们需要爬取卫健委官网从疫情初始到如今的四十几页的疫情通报页面,为此我设计了sethomepage()函数来完成对于整个主页面的抓取,将一级网址导出并保存为excel文件。
- 之后,通过遍历一级页面网址,利用第三方库bs4中的Beautifulsoup,写了三个函数:gethomepage()用来读取一级网址excel文件,getdatapage()爬取了一级页面的html源码,setsubpage()利用标签筛选出源码中的二级网址并导入保存到excel当中。到此为止,成功爬取了疫情初始至今的九百多天的疫情通报网址。
- 再通过遍历二级网址,利用getdata()获取了二级页面的源码,再进一步筛选出文本内容。
- new_confirmed_cases()获取新增确诊人数数据并,导入保存excel
- new_asymptomatic_infections()获取新增无症状感染者人数数据,导入保存excel
- specialzones()获取港澳台的疫情数据,导入保存excel
- 通过第三方库pyecharts利用保存的excel进行可视化
(3.3)数据统计接口部分的性能改进。记录在数据统计接口的性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(例如可通过VS 2019/JProfiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。(6')
因为在数据处理和数据可视化上花费了大量的时间,在每日热点上,没有选择学习机器学习来推送热点,而是通过统计,来得知是否有近七天连续都有新增确诊人数的省市,还有是否有近七天来首次出现新增确诊人数的省市,进行推送。
- 第一张可视化图展示了中国最近一日各省市新增确诊人数(本文以9月11日为例),这张图通过中国地图的形式展示,左下角是根据确诊人数不同的颜色区分。可以通过鼠标移动,可以得知当前鼠标的对应的省市最近一日确诊信息。
- 第二张可视化图展示了中国近二十天来各省市新增的确诊人数,通过折线图的形式来展示31个省市的数据,没有将港澳台的数据放入此图,因为台湾的数据一骑绝尘,影响折线图的观感。同时,因为省市的个数较多,在每个省市二十天来新增确诊人数的最大值时显示一个气球标签(图中可见),鼠标放上去可以看到当前折线的信息。左边是各省市的折线颜色,我们可以通过选取和取消来选择是否显示这个省市的折线(默认是全部显示)。
- 第三张图展示了中国近二十天来个省市新增的无症状感染者的人数,展示方式和原理同第二张图。
想要实现这个爬虫功能,我虽然有一定的JAVA基础,但是实现JAVA爬虫比较麻烦,所以我最后选择了学习python,利用python来实现爬虫功能。在学习了python之后,我觉得python真是简洁和好用,不用思考太多的语言束缚,还有个语言之间有着许许多多的相似点,有JAVA的基础再来学习python上手非常快。至于爬虫的实现,需要在各种网站查询各种功能的实现,要有清晰的逻辑,一步一步的实现需要的功能,所以如何将我们查询到的碎片化的各项知识,进行统一以达到目的是我收获最大的经验之一。