发布网友
共2个回答
懂视网
Python实时数据采集-新型冠状病毒
源代码 来源:https://github.com/Programming-With-Love/2019-nCoV
疫情数据时间为:2020.2.1
项目相关截图:
全国数据展示
国内数据展示
国外数据展示
查看指定区域详细数据
源代码,注意安装所需模块(例如 pip install 模块名)
import requests import re from bs4 import BeautifulSoup from time import sleep import json from prettytable import ALL from prettytable import PrettyTable hubei = {} guangdong = {} zhejiang = {} beijing = {} shanghai = {} hunan = {} anhui = {} chongqing = {} sichuan = {} shandong = {} guangxi = {} fujian = {} jiangsu = {} henan = {} hainan = {} tianjin = {} jiangxi = {} shanxi1 = {} # 陕西 guizhou = {} liaoning = {} xianggang = {} heilongjiang = {} aomen = {} xinjiang = {} gansu = {} yunnan = {} taiwan = {} shanxi2 = {} # 山西 jilin = {} hebei = {} ningxia = {} neimenggu = {} qinghai = {} # none xizang = {} # none provinces_idx = [hubei, guangdong, zhejiang, chongqing, hunan, anhui, beijing, shanghai, henan, guangxi, shandong, jiangxi, jiangsu, sichuan, liaoning, fujian, heilongjiang, hainan, tianjin, hebei, shanxi2, yunnan, xianggang, shanxi1, guizhou, jilin, gansu, taiwan, xinjiang, ningxia, aomen, neimenggu, qinghai, xizang] map = { '湖北':0, '广东':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, '宁夏':30, '内蒙古':31, '青海':32, '':33 } def getTime(text): TitleTime = str(text) TitleTime = re.findall('<span>(.*?)</span>', TitleTime) return TitleTime[0] def getAllCountry(text): AllCountry = str(text) AllCountry = AllCountry.replace("[<p class="confirmedNumber___3WrF5"><span class="content___2hIPS">", "") AllCountry = AllCountry.replace("<span style="color: #4169e2">", "") AllCountry = re.sub("</span>", "", AllCountry) AllCountry = AllCountry.replace("</p>]", "") AllCountry = AllCountry.replace("<span style="color: rgb(65, 105, 226);">", "") AllCountry = re.sub("<span>", "", AllCountry) AllCountry = re.sub("<p>", "", AllCountry) AllCountry = re.sub("</p>", "", AllCountry) return AllCountry def query(province): table = PrettyTable(['地区', '确诊', '死亡', '治愈']) for (k, v) in province.items(): name = k table.add_row([name, v[0] if v[0] != 0 else '-', v[1] if v[1] != 0 else '-', v[2] if v[2] != 0 else '-']) if len(province.keys()) != 0: print(table) else: print("暂无") def getInfo(text): text = str(text) text = re.sub("<p class="descText___Ui3tV">", "", text) text = re.sub("</p>", "", text) return text def is_json(json_str): try: json.loads(json_str) except ValueError: return False return True def ff(str, num): return str[:num] + str[num+1:] def main(): url = "https://3g.dxy.cn/newh5/view/pneumonia" try: headers = {} headers['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win; x) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36' #http头大小写不敏感 headers['accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' headers['Connection'] = 'keep-alive' headers['Upgrade-Insecure-Requests'] = '1' r = requests.get(url, headers=headers) r.raise_for_status() r.encoding = r.apparent_encoding soup = BeautifulSoup(r.text,'lxml') table = PrettyTable(['地区', '确诊', '死亡', '治愈']) table.hrules = ALL #### 截至时间 # TitleTime = getTime(soup.select('.title___2d1_B')) print() # print(" ",TitleTime + " ") while True: r = requests.get("https://service-f9fjwngp-1252021671.bj.apigw.tencentcs.com/release/pneumonia") json_str = json.loads(r.text) if json_str['error'] == 0: break print("==================================全国数据==================================") print() print(" 确诊 " + str(json_str['data']['statistics']['confirmedCount']) + " 例" + " " + "疑似 " + str(json_str['data']['statistics']['suspectedCount']) + " 例" + " " + "死亡" + str(json_str['data']['statistics']['deadCount']) + " 例" + " " + "治愈" + str(json_str['data']['statistics']['curedCount']) + " 例 ") print("==================================相关情况==================================") print() print("传染源:" + json_str['data']['statistics']['infectSource']) print("病毒:" + json_str['data']['statistics']['virus']) print("传播途径:" + json_str['data']['statistics']['passWay']) print(json_str['data']['statistics']['remark1']) print(json_str['data']['statistics']['remark2'] + " ") print("==================================国内情况==================================") print() json_provinces = re.findall("{"provinceName":(.*?)]}", str(soup)) idx = 0 for province in json_provinces: if is_json(province): pass else: province = "{"provinceName":" + province + "]}" province = json.loads(province) province_name = province['provinceShortName'] if province['provinceShortName'] != 0 else '-' confirmed = province['confirmedCount'] if province['confirmedCount'] != 0 else '-' suspected = province['suspectedCount'] if province['suspectedCount'] != 0 else '-' cured = province['curedCount'] if province['curedCount'] != 0 else '-' dead = province['deadCount'] if province['deadCount'] != 0 else '-' table.add_row([province_name, confirmed, dead, cured]) map[province_name] = idx idx = idx + 1 for city in province['cities']: provinces_idx[map[province_name]][city['cityName']] = [city['confirmedCount'], city['deadCount'], city['curedCount']] print(table) print() print("==================================国外情况==================================") print() json_provinces = str(re.findall(""id":949(.*?)]}", str(soup))) json_provinces = json_provinces[:1] + "{"id":949" + json_provinces[2:] json_provinces = json_provinces[:len(json_provinces) - 2] + json_provinces[len(json_provinces) - 1:] provinces = json.loads(json_provinces) table = PrettyTable(['地区', '确诊', '死亡', '治愈']) for province in provinces: confirmed = province['confirmedCount'] if province['confirmedCount'] != 0 else '-' dead = province['deadCount'] if province['deadCount'] != 0 else '-' cured = province['curedCount'] if province['curedCount'] != 0 else '-' table.add_row([province['provinceName'], confirmed, dead, cured]) print(table) print() print("==================================最新消息==================================") print() idx = 0 for news in json_str['data']['timeline']: if idx == 5: break print(news['pubDateStr'] + " " + news['title']) idx = idx + 1 print() key = input("请输入您想查询详细信息的省份,例如 湖北 ") print() if key in map.keys(): query(provinces_idx[map[key]]) else: print("暂无相关信息") print(" 欢迎提出各种意见") except: print("连接失败") if __name__ == '__main__': main() sleep(30)
最后,祝大家百毒不侵,中国加油!!一定能够度过难关!!
热心网友
核酸检测信息派出所会知道,疾控中心,社区,都会知道。所有生物都含有核酸,核酸包括脱氧核糖核酸(DNA)和核糖核酸(RNA),新型冠状病毒是一种仅含有RNA的病毒,病毒中特异性RNA序列是区分该病毒与其它病原体的标志物。新型冠状病毒出现后,我国科学家在极短的时间里完成了对新型冠状病毒全基因组序列的解析,并通过与其它物种的基因组序列对比,发现了新型冠状病毒中的特异核酸序列。临床实验室检测过程中,如果能在患者样本中检测到新型冠状病毒的特异核酸序列,应提示该患者可能被新型冠状病毒感染。
【拓展资料】
对于新型冠状病毒的核酸检测,首先根据试剂盒说明书"样本要求"部分进行样本采集,常规的样本类型包括咽拭子、鼻拭子、痰液、支气管灌洗液、肺泡灌洗液等。
获得患者样本后,需尽快进行检测,如无法立即检测需要转运的样本,应按照说明书的要求进行低温封装,并送到专门的检测机构进行检测。检测机构收到样本后,对样本进行核酸提取,核酸提取试剂应使用批准产品说明书中指定的核酸提取试剂盒。
病毒RNA需要首先逆转录为cDNA,再进行扩增检测。PCR扩增和检测应使用批准产品说明书中指定的荧光定量PCR仪,通过荧光定量PCR所得到的样本Ct值的大小,可以判断患者样本中是否含有新型冠状病毒。
上述过程中样本的采集、保存、转运,样本核酸的提取和检测、结果的判读均须严格按照试剂盒说明书要求进行。
核酸检测的"假阳性"是指患者本来没感染新冠病毒,但核酸检测出现阳性结果。此"假阳性"的出现通常是由于实验室检测过程中标本间的交叉污染或实验室核酸污染造成的。在技术层面上讲,只要实验室严格落实质控工作,可有效避免"假阳性"的产生。
核酸检测的"假阴性"是指从患者的临床症状、肺部影像学结果甚至流行病学史都支持为新冠肺炎,但患者病毒核酸检测结果为"阴性",检测结果与临床不符。
通常"假阴性"产生原因为:
(1)病毒入侵人体初期,人体内病毒量尚未达到可检测的程度。在病毒潜伏期、轻度症状、严重症状的不同时期,人体的不同部位(如鼻咽部、口咽部、气管、支气管和肺泡)的病毒载量会存在差异。所以,采样时机和采样部位的不同,可能导致所采集的标本中没有足够量的病毒;
(2)任何检测试剂都有其检测下限(即敏感性),如果患者标本内的病毒达不到所使用试剂的检测下限,则会出现假阴性;
(3)实验室仪器设备性能和人员检测能力差、质量管理落实不到位等也会产生"假阴性";
(4)采样不规范、采集部位不当、采集标本不典型,导致标本中被病毒感染的细胞太少或没有。即可能造成"假阴性"。