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.
104 lines
3.4 KiB
104 lines
3.4 KiB
import requests
|
|
import re
|
|
from bs4 import BeautifulSoup
|
|
import json
|
|
import pymysql
|
|
import time
|
|
|
|
#定义类
|
|
class summaryDataOut:
|
|
def __init__(self,js={}):
|
|
self.confirmed=0
|
|
self.died=0
|
|
self.curConfirm=0
|
|
self.cured=0
|
|
self.confirmedRelative=0
|
|
self.curedRelative=0
|
|
self.diedRelative=0
|
|
self.curConfirmRelative=0
|
|
self.time=''
|
|
|
|
def get_db_tuple(self):
|
|
return (self.confirmed,self.died,self.curConfirm,self.cured,self.confirmedRelative,self.curedRelative,self.diedRelative,self.curConfirmRelative,self.time)
|
|
|
|
def delete_sql(self,con):
|
|
sql="""
|
|
delete from outsideSummary
|
|
"""
|
|
try:
|
|
cursor=con.cursor()
|
|
cursor.execute(sql)
|
|
except Exception as e:
|
|
print(e)
|
|
print('delete outside summary failed.')
|
|
else:
|
|
print('delete outside summary successfully')
|
|
|
|
|
|
|
|
def insert_sql(self,con):
|
|
self.delete_sql(con)
|
|
sql="""insert into outsideSummary(confirmed,died,curConfirm,cured,
|
|
confirmedRelative,curedRelative,diedRelative,curConfirmRelative,time)
|
|
values(%s,%s,%s,%s,%s,%s,%s,%s,%s)
|
|
"""
|
|
try:
|
|
con.cursor().execute(sql,self.get_db_tuple())
|
|
con.commit()
|
|
except Exception as e:
|
|
print(e)
|
|
print('Insert outsideSummary failed.')
|
|
else:
|
|
print('Inserted outsideSummary successfully')
|
|
|
|
def blankNum (self,object):
|
|
return ' '*(12-len(str(object)))
|
|
|
|
def PrintOut(self):
|
|
print("截至%s国外疫情概况:"%self.time)
|
|
print("现有确诊:%d" % self.curConfirm, end=self.blankNum(self.curConfirm))
|
|
print("相对昨日新增:%d"%self.curConfirmRelative)
|
|
print("累计确诊:%d"%self.confirmed,end=self.blankNum(self.confirmed))
|
|
print("相对昨日新增:%d"%self.confirmedRelative)
|
|
print("累计治愈:%d"%self.cured,end=self.blankNum(self.cured))
|
|
print("相对昨日新增:%d"%self.curedRelative)
|
|
print("累计死亡:%d"%self.died,end=self.blankNum(self.died))
|
|
print("相对昨日新增:%d"%self.diedRelative)
|
|
|
|
def getoutsideSummary():
|
|
# 获取数据
|
|
req = requests.get ('https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_3#tab4')
|
|
content = req.content.decode('utf-8')
|
|
soup = BeautifulSoup(content,'html.parser')
|
|
|
|
# 过滤筛选
|
|
tag = soup.find('script',attrs={'type':'application/json','id':'captain-config'})
|
|
tagstr=tag.string #标签转化为字符串
|
|
tagdic=json.loads(tagstr) #标签字符串转化为字典
|
|
component=tagdic['component'][0] #获得疫情状况字典
|
|
time= component['mapLastUpdatedTime'] #字典中找出时间
|
|
result = component['summaryDataOut'] #字典中找出'component'key下的'summaryDataOut'key内容
|
|
|
|
# 存储
|
|
OutData=summaryDataOut()
|
|
|
|
OutData.confirmed=int(result['confirmed'])
|
|
OutData.confirmedRelative=int(result['confirmedRelative'])
|
|
OutData.cured=int(result['cured'])
|
|
OutData.curedRelative=int(result['curedRelative'])
|
|
OutData.died=int(result['died'])
|
|
OutData.diedRelative=int(result['diedRelative'])
|
|
OutData.curConfirm=int(result['curConfirm'])
|
|
OutData.curConfirmRelative=int(result['curConfirmRelative'])
|
|
#
|
|
OutData.time=time
|
|
return OutData
|
|
|
|
def printStart():
|
|
getoutsideSummary().PrintOut()
|
|
|
|
def mysqlStart(con):
|
|
sum=getoutsideSummary()
|
|
sum.insert_sql(con)
|
|
|