https://github.com/leafcoder/...html
http://111.231.75.86/dashboardpython
本项目的数据来源为丁香园
,定时获取疫 情数据,保存疫情数据变动状况,以备跟踪研究和数据图表化展现。nginx
请按照如下步骤完成项目的初始化和启动。git
注意:请先修改 covid19/settings.py 中SCRAPY_CMD
,设置为 scrapy 命令完整路径。 不然,自动更新任务将没法正常运行github
能够经过git clone
直接将master
分支的代码克隆到本机使用;sql
$ cd `YOUR_PROJECT_DIR` # 项目须要下载到的目录 $ git@github.com:leafcoder/django-covid19.git
也能够直接下载打包好的代码;数据库
$ cd `YOUR_PROJECT_DIR` # 项目须要下载到的目录 $ wget https://github.com/leafcoder/django-covid19/archive/<VERSION>.tar.gz # VERSION 为要下载的版本号 $ tar zxf <VERSION>.tar.gz
启动服务前,请先安装项目的 python 依赖包。可使用pyenv
或者virtualenvwrapper
来管理python
运行环境;django
$ cd django-covid19 $ pip install -r requirement.txt
若是直接经过系统自带python
运行本项目,需在命令前加上sudo
;api
$ cd django-covid19 $ sudo pip install -r requirement.txt
项目默认配置是以sqlite3
做为数据库存储数据,若是须要修改,请自行更改covid19/settings.py
中的数据库配置; 并运行如下命令完成项目数据库的初始化;浏览器
$ ./manage.py makemigrations ncovapi $ ./manage.py migrate
使用后台请先建立管理员帐号;
$ ./manage.py createsuperuser
在DEBUG = False
的状况下,后台的静态文件将没法使用,必须运行如下命令将静态文件保存到对应目录才能正常使用项目后台;
$ ./manage.py collectstatic
项目经过运行爬虫程序,将每一次数据的变动保存到数据库中;
要建立自动抓取丁香园新冠数据任务须要运行以下命令,建立定时任务;
$ ./manage.py crontab add
正式环境的部署建议使用nginx + uwsgi + django
方案完成项目部署;简单运行查看接口状况,运行以下命令便可;
$ ./manage.py runserver
运行成功后,经过浏览器访问http://localhost:8000/api/statistics/
便可看到统计数据。
本系统主要是将从丁香园
获取的数据从新整合成接口返回出来。
获取最新获取到的全球总体疫情统计数据、相关文章、平常建议、推荐信息等;
接口地址:/api/statistics/latest
请求方法:GET
请求示例:
http://111.231.75.86:8000/api/statistics/latest
返回结果:
{ "globalStatistics": { "confirmedCount": 2913206, "curedCount": 826309, "deadCount": 206245, "seriousCount": 0, "currentConfirmedCount": 1880652, "suspectedCount": 0 }, "domesticStatistics": { "confirmedCount": 84341, "curedCount": 78558, "deadCount": 4643, "seriousCount": 974, "currentConfirmedCount": 1140, "suspectedCount": 1636 }, "internationalStatistics": { "confirmedCount": 2828865, "curedCount": 747751, "deadCount": 201602, "seriousCount": 0, "currentConfirmedCount": 1879512, "suspectedCount": 4 }, "recommends": [ { "contentType": 1, "countryType": 1, "title": "传染病全球大流行,历史早就告诉咱们的 5 件事", "recordStatus": 1, "linkUrl": "https://mp.weixin.qq.com/s?__biz=MjA1ODMxMDQwMQ==&mid=2657278282&idx=1&sn=ec5a88bf6cead3079f2f48f68f64aa93&chksm=4906dd247e715432a91c3c99e4d92082ffd2eb8c6ddf4355b833f597d9464aa22ad048d84d0b&token=2114569265〈=zh_CN#rd", "imgUrl": "https://img1.dxycdn.com/2020/0325/826/3403983726425257144-135.jpg" } ], "remarks": [ "易感人群:人群广泛易感。老年人及有基础疾病者感染后病情较重,儿童及婴幼儿也有发病", "潜伏期:通常为 3~7 天,最长不超过 14 天,潜伏期内可能存在传染性,其中无症状病例传染性很是罕见", "宿主:野生动物,可能为中华菊头蝠" ], "createTime": "2020-01-20T16:31:39Z", "generalRemark": "1. 3 月 12 日国家卫健委确诊补订遗漏 12 例确诊病例(非 12 日新增),暂无具体省份信息。 2. 浙江省 12 例外省治愈暂无具体省份信息。", "rumors": [ { "body": "近日,有人在朋友圈兜售某公司生产的新冠病毒抗体检测试剂盒,单价 150 元,并宣称能够家庭自行使用。对此,北京市药监局提示,经批准注册的新冠病毒检测试剂盒,均须要具有 PCR 实验室及专用设备的医疗机构才能完成检测,普通市民家庭不可自行使用,市民不要轻信虚假宣传,出现相关症状应及时就医。", "mainSummary": "北京市药监局提示:普通市民家庭不可自行使用", "sourceUrl": "", "title": "可在家使用新冠病毒试剂盒自测?", "summary": "", "score": 1000, "rumorType": 0 } ], "goodsGuides": [ { "contentImgUrls": [ "https://img1.dxycdn.com/2020/0215/220/3396780175063930893-135.png", "https://img1.dxycdn.com/2020/0215/637/3396780181506594738-135.png", "https://img1.dxycdn.com/2020/0215/372/3396780187949046019-135.png" ], "recordStatus": 1, "categoryName": "消毒剂", "title": "消毒剂指南" } ], "modifyTime": "2020-04-27T04:33:01Z", "timelines": [ { "sourceUrl": "http://app.cctv.com/special/cportal/detail/arti/index.html?id=ArtiL3Kf65mSxf2yQjQ7WJpZ200427&isfromapp=1", "pubDate": 1587958979000, "title": "一季度全国社会物流总额56.0万亿元 同比降低7.5%", "summary": "中国物流与采购联合会今天(27日)公布一季度物流运行数据。受新冠肺炎疫情影响,一季度社会物流总需求出现负增加。一季度,全国社会物流总额为56.0万亿元,同比降低7.5%,与1-2月相比,降幅收窄4.3个百分点。 ", "pubDateStr": "9分钟前", "infoSource": "央视新闻app" } ], "wikis": [ { "linkUrl": "https://ask.dxy.com/ama/index#/disease/24677/info/0", "description": "这次流行的冠状病毒为一种新发现的冠状病毒,国际病毒分类委员会命名为 SARS-Cov-2。由于人群缺乏对新型病毒株的免疫力,因此人群广泛易感。", "imgUrl": "", "title": "什么是新型冠状病毒?" } ], "WHOArticle": { "linkUrl": "https://mp.weixin.qq.com/s/6q0qMFXzoKI7MMvY7zrXUw", "imgUrl": "https://img1.dxycdn.com/2020/0220/196/3397701576545475720-135.jpg", "title": "新冠病毒会变异?口罩不够怎么办?世界卫生组织的答疑来了!" }, "notes": [ "病毒:SARS-CoV-2,其致使疾病命名 COVID-19", "传染源:新冠肺炎的患者。无症状感染者也可能成为传染源。", "传播途径:经呼吸道飞沫、接触传播是主要的传播途径。气溶胶传播和消化道等传播途径尚待明确。" ] }
获取项目从启动到当前获取到的所有疫情统计数据,分为全球、国内、国际三部分;
接口地址:/api/statistics/
请求方法:GET
请求示例:
http://111.231.75.86:8000/api/statistics/
返回结果:
[ { "globalStatistics": { "confirmedCount": 2913206, "curedCount": 826309, "deadCount": 206245, "seriousCount": 0, "currentConfirmedCount": 1880652, "suspectedCount": 0 }, "domesticStatistics": { "confirmedCount": 84341, "curedCount": 78558, "deadCount": 4643, "seriousCount": 974, "currentConfirmedCount": 1140, "suspectedCount": 1636 }, "internationalStatistics": { "confirmedCount": 2828865, "curedCount": 747751, "deadCount": 201602, "seriousCount": 0, "currentConfirmedCount": 1879512, "suspectedCount": 4 }, "modifyTime": "2020-04-30T01:12:33Z", "createTime": "2020-01-20T16:31:39Z" } ]
根据国家名称获取某个国家的疫情从 2020-01-19 到目前的疫情列表数据;
接口地址:/api/countries/<COUNTRY_NAME>/daily/
请求方法:GET
示例连接:
http://111.231.75.86:8000/api/countries/美国/daily/
http://111.231.75.86:8000/api/countries/巴西/daily/
返回结果:
[ { "dateId": 20200119, "currentConfirmedCount": 188, "confirmedCount": 217, "suspectedCount": 0, "curedCount": 25, "deadCount": 4, "currentConfirmedIncr": 188, "confirmedIncr": 217, "suspectedCountIncr": 0, "curedIncr": 25, "deadIncr": 4 }, { "dateId": 20200120, "currentConfirmedCount": 188, "confirmedCount": 217, "suspectedCount": 0, "curedCount": 25, "deadCount": 4, "currentConfirmedIncr": 188, "confirmedIncr": 217, "suspectedCountIncr": 0, "curedIncr": 25, "deadIncr": 4 }, ... ]
获取各个国家的疫情统计数据;
接口地址:/api/countries/
请求方法:GET
请求参数:
参数
描述
continents
所属大洲,可选值为(北美洲,南美洲,非洲,欧洲,亚洲,大洋洲,南极洲);以逗号分割多个值;
countryShortCodes
国家英文缩写,如:美国的英文缩写为 USA;以逗号分割多个值;
countryNames
国家中文名,如:美国、中国;以逗号分割多个值;
示例连接:
http://111.231.75.86:8000/api/countries/?continents=南美洲,北美洲&countryNames=美国,巴西
返回结果:
[ { "continents": "北美洲", "countryShortCode": "USA", "countryName": "美国", "countryFullName": "United States of America", "currentConfirmedCount": 803916, "confirmedCount": 965785, "suspectedCount": 0, "curedCount": 106988, "deadCount": 54881, "incrVo": { "confirmedIncr": 0, "currentConfirmedIncr": 0, "curedIncr": 0, "deadIncr": 0 } } ]
根据国家名称获取某个国家的疫情统计数据;
接口地址:/api/countries/<COUNTRY_NAME>/
请求方法:GET
示例连接:
http://111.231.75.86:8000/api/countries/美国/
http://111.231.75.86:8000/api/countries/巴西/
返回结果:
{ "continents": "北美洲", "countryShortCode": "USA", "countryName": "美国", "countryFullName": "United States of America", "currentConfirmedCount": 803916, "confirmedCount": 965785, "suspectedCount": 0, "curedCount": 106988, "deadCount": 54881, "incrVo": { "confirmedIncr": 0, "currentConfirmedIncr": 0, "curedIncr": 0, "deadIncr": 0 } }
经过短省份名
获取某个中国省份(自治区、直辖市)的疫情从 2020-01-19 到目前的疫情列表数据;
接口地址:/api/provinces/<PROVINCE_SHORT_NAME>/daily/
请求方法:GET
示例连接:
http://111.231.75.86:8000/api/provinces/四川/daily/
http://111.231.75.86:8000/api/provinces/台湾/daily/
http://111.231.75.86:8000/api/provinces/香港/daily/
http://111.231.75.86:8000/api/provinces/澳门/daily/
返回结果:
[ { "dateId": 20200119, "currentConfirmedCount": 188, "confirmedCount": 217, "suspectedCount": 0, "curedCount": 25, "deadCount": 4, "currentConfirmedIncr": 188, "confirmedIncr": 217, "suspectedCountIncr": 0, "curedIncr": 25, "deadIncr": 4 }, { "dateId": 20200120, "currentConfirmedCount": 188, "confirmedCount": 217, "suspectedCount": 0, "curedCount": 25, "deadCount": 4, "currentConfirmedIncr": 188, "confirmedIncr": 217, "suspectedCountIncr": 0, "curedIncr": 25, "deadIncr": 4 }, ... ]
获取中国各中国省/自治区/直辖市的疫情统计数据;
接口地址:/api/provinces/
请求方法:GET
请求参数:
参数
描述
provinceNames
省份名(自治区、直辖市),如:黑龙江省、四川省、北京市;以逗号分割多个值;
provinceShortNames
短省份名(自治区、直辖市),如:黑龙江、四川、香港;以逗号分割多个值;
示例连接:
http://111.231.75.86:8000/api/provinces/?provinceShortNames=四川,香港
返回结果:
[ { "provinceName": "黑龙江省", "provinceShortName": "黑龙江", "currentConfirmedCount": 367, "confirmedCount": 936, "suspectedCount": 384, "curedCount": 556, "deadCount": 13 } ]
经过短省份名
获取某个中国省份(自治区、直辖市)的疫情统计数据;
接口地址:/api/provinces/<PROVINCE_SHORT_NAME>/
请求方法:GET
示例连接:
http://111.231.75.86:8000/api/provinces/四川/
http://111.231.75.86:8000/api/provinces/台湾/
http://111.231.75.86:8000/api/provinces/香港/
http://111.231.75.86:8000/api/provinces/澳门/
返回结果:
{ "provinceName": "黑龙江省", "provinceShortName": "黑龙江", "currentConfirmedCount": 367, "confirmedCount": 936, "suspectedCount": 384, "curedCount": 556, "deadCount": 13 }
获取中国各个城市或直辖市某个区的疫情数据。
接口地址:/api/cities/
请求方法:GET
请求参数:
参数
描述
provinceShortNames
短省份名,如:黑龙江、四川;以逗号分割多个值;
cityNames
城市名,如:大庆、万州区
示例连接:
http://111.231.75.86:8000/api/cities/?cityNames=大庆,万州区
返回结果:
[ { "provinceName": "黑龙江省", "cityName": "境外输入", "currentConfirmedCount": 300, "confirmedCount": 386, "suspectedCount": 34, "curedCount": 86, "deadCount": 0 } ]
接口地址:/api/cities/<CITY_NAME>/
请求方法:GET
示例连接:
http://111.231.75.86:8000/api/cities/大庆/
返回结果:
{ "provinceName": "黑龙江省", "cityName": "哈尔滨", "currentConfirmedCount": 61, "confirmedCount": 260, "suspectedCount": 8, "curedCount": 195, "deadCount": 4 }