You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
p9ew5o3q7/CaseInland.py

121 lines
5.4 KiB

import requests
import re
from bs4 import BeautifulSoup
import json
import time
class City:
def __init__(self,tempjs={},city='无数据',confiemed='无数据',died='无数据',crued='无数据',confirmedRelative='无数据',cityCode='无数据'):
self.city=city
self.confirmed=confiemed
self.died=died
self.crued=crued
self.confirmedRelative=confirmedRelative
self.cityCode=cityCode
js={'city': '无数据', 'confirmed': '无数据', 'died': '无数据', 'crued': '无数据', 'confirmedRelative': '无数据', 'curConfirm': '无数据', 'cityCode': '无数据'}
for k,v in tempjs.items():
if tempjs[k]!='':
js[k]=v
self.city=js["city"]
self.confirmed=js["confirmed"]
self.died=js["died"]
self.crued=js["crued"]
self.confirmedRelative=js["confirmedRelative"]
self.cityCode=js["cityCode"]
def __str__(self):
if self.city=='境外输入':
return "其它情况:{:<10}城市代码:{:<4}新增患者:{:<4}累积确诊:{:<4}累积死亡:{:<4}累积治愈:{:<4}".format(self.city,self.cityCode,self.confirmedRelative,
self.confirmed,self.died,self.crued)
return "城市名:{:<10}城市代码:{:<4}新增患者:{:<4}累积确诊:{:<4}累积死亡:{:<4}累积治愈:{:<4}".format(self.city,self.cityCode,self.confirmedRelative,
self.confirmed,self.died,self.crued)
class Provinces:
def __init__(self):
self.number=0
self.province=[]
def addProvince(self,province):
self.province.append(province)
def printEveryProvince(self):
for p in self.province:
print(p)
def __str__(self):
return str(self.province)
class Province:
def __init__(self,tempjs={},confirmed='无数据',died='无数据',crued='无数据',relativeTime='无数据',confirmedRelative='无数据',
diedRelative='无数据',curedRelative='无数据',asymptomaticRelative='无数据',asymptomatic='无数据',
curConfirm='无数据',curConfirmRelative='无数据',icuDisable='无数据',area='无数据',subList=[]):
self.died=died
self.confirmed=confirmed
self.crued=crued
self.relativeTime=relativeTime
self.confirmedRelative=confirmedRelative
self.diedRelative=diedRelative
self.curedRelative=curedRelative
self.asymptomaticRelative=asymptomaticRelative
self.asymptomatic=asymptomatic
self.curConfirm=curConfirm
self.curConfirmRelative=curConfirmRelative
self.icuDisable=icuDisable
self.area=area
self.subList=subList
js={'confirmed': '无数据', 'died': '无数据', 'crued': '无数据', 'relativeTime': '无数据', 'confirmedRelative': '无数据',
'diedRelative': '无数据', 'curedRelative': '无数据', 'asymptomaticRelative': '无数据', 'asymptomatic': '无数据', 'curConfirm': '无数据',
'curConfirmRelative': '无数据', 'icuDisable': '无数据', 'area': '无数据', 'subList':[]}
for k,v in tempjs.items():
if tempjs[k]!='':
js[k]=v
#print(js)
self.died=js['died']
self.confirmed=js['confirmed']
self.crued=js['crued']
self.relativeTime=js['relativeTime']
self.confirmedRelative=js['confirmedRelative']
self.diedRelative=js['diedRelative']
self.curedRelative=js['curedRelative']
self.asymptomaticRelative=js['asymptomaticRelative']
self.asymptomatic=js['asymptomatic']
self.curConfirm=js['curConfirm']
self.curConfirmRelative=js['curConfirmRelative']
self.icuDisable=js['icuDisable']
self.area=js['area']
self.subList=js['subList']
cities=js["subList"]
for c in cities:
city=City(c)
subList.append(city)
def printEveryCity(self):
for c in self.subList:
city=City(c)
print(city)
def __str__(self):
localobj=time.localtime(int(self.relativeTime))
newtime=time.strftime("%Y-%m-%d %H:%M:%S",localobj)
return "省份:{:<4}现有患者:{:<4}现有新增患者:{:<4}累积无症状感染者:{:<4}新增无症状感染者:{:<4}累积确诊:{:<6}新增确诊:{:<4}累积治愈:{:<6}新增治愈:{:<4}累积死亡:{:<6}新增死亡:{:<4}累积重症:{:<4}更新时间:{:<10}".format(self.area,self.curConfirm,self.curConfirmRelative,
self.asymptomatic,self.asymptomaticRelative,self.confirmed,self.confirmedRelative,self.crued,self.curedRelative,self.died,self.diedRelative,
self.icuDisable,newtime)
def start():
res=requests.get('https://voice.baidu.com/act/newpneumonia/newpneumonia/')
res=res.text
#script type="application/json"
soup=BeautifulSoup(res,'html.parser')
tag=soup.find('script',attrs={'id':'captain-config'})
tagstr=str(tag)
findinland=re.findall('caseList".*"caseOutsideList',tagstr)[0]
province=re.findall('\{"confirmed.*?subList":\[.*?\]\}',findinland)
provinces=Provinces()
for item in province:
js=json.loads(item)
p=Province(js)
provinces.addProvince(p)
print(p)
p.printEveryCity()
print("++++++++++++++++++++++++++++++"*4)
#provinces.printEveryProvince()