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.
121 lines
5.4 KiB
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()
|
|
|
|
|