修正了bug,表格建立至16日

master
SaiCateDoan 5 years ago
parent 3ebdbf84f6
commit b618122e6a

File diff suppressed because one or more lines are too long

Binary file not shown.

@ -1,5 +1,4 @@
import time
import datetime
import requests
from bs4 import BeautifulSoup
import re
@ -187,17 +186,7 @@ def Inside(ds):
html = self.fetch_html_page()
self.parse_html_page(html)
all_province,all_city = self.fetch_province_datas()
# print(len(all_province))
# for item in all_province:
# # print(item.get_info_tuple())
# for i in item.cities:
# print(i.get_info_tuple())
# print("++++++++++++++++++++++++++++++++++++++++++++++"*4)
# for i in all_city:
# print(i.get_info_tuple())
# print("++++++++++++++++++++++++++++++++++++++++++++++"*4)
# print(len(all_city))
# # 保存省份数据
self.db.save_province_datas(all_province)
# 保存城市数据
@ -353,10 +342,10 @@ def OutsideSummary(dsin):
def save_outsideSummary_datas(self, outsideSummary):
date=datetime.datetime.now().strftime('%Y-%m-%d')
print('+++ [MyDB] delete from outsideSummary_realtime_datas')
self.cursor.execute('delete from outsideSummary_realtime_datas where updatedTime like "%s"'%(date+'%'))
self.cursor.execute('delete from outsidesummary_realtime_datas where updatedTime like "%s"'%(date+'%'))
self.conn.commit()
sql = 'insert into outsideSummary_realtime_datas(currentConfirmedCount,confirmedCount,suspectedCount,curedCount,deadCount,suspectedIncr,currentConfirmedIncr,confirmedIncr,curedIncr,deadIncr,updatedTime) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
sql = 'insert into outsidesummary_realtime_datas(currentConfirmedCount,confirmedCount,suspectedCount,curedCount,deadCount,suspectedIncr,currentConfirmedIncr,confirmedIncr,curedIncr,deadIncr,updatedTime) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
res = self.get_outsideSummary_list_tuple(outsideSummary)
print('+++ save_outsideSummary_datas, data len: %d' % len(res))
try:
@ -405,7 +394,7 @@ def OutsideSummary(dsin):
result = re.findall('\{"currentConfirmedCount".*?"deadIncr".*?\}', tagstr)
# 获取国外疫情数据
#print(result[0])
print(tagstr)
obj = json.loads(result[0])
@ -434,124 +423,129 @@ def OutsideSummary(dsin):
ds.db.save_outsideSummary_datas(outsideSummary)
def InsideSummary(ds):
class InsideSummary:
class class_InsideSummary:
def __init__(self):
self.curConfirm = 0 #现有确诊
self.curConfirmRelative = 0#较昨日新增确诊
self.asymptomatic = 0 #无症状感染
self.asymptomaticRelative = 0 #较昨日新增无症状感染
self.unconfirmed = 0 #现有疑似
self.unconfirmedRelative = 0#较昨日疑似新增
self.icu = 0 #现有重症
self.icuRelative = 0 #较昨日重症病例新增
self.confirmed = 0 #累计确诊
self.confirmedRelative = 0 #较昨日累计确诊新增
self.overseasInput = 0 #累计境外输入
self.overseasInputRelative = 0#较昨日累计境外输入新 增
self.cured = 0 #累计治愈
self.curedRelative = 0 #较昨日累计治愈新增
self.died = 0 #累计死亡
self.diedRelative = 0#较昨日累计死亡新增
self.updatedTime = 0 #发布时间
# 数据库接口
self.curConfirm = 0 # 现有确诊
self.curConfirmRelative = 0 # 较昨日新增确诊
self.asymptomatic = 0 # 无症状感染
self.asymptomaticRelative = 0 # 较昨日新增无症状感染
self.unconfirmed = 0 # 现有疑似
self.unconfirmedRelative = 0 # 较昨日疑似新增
self.icu = 0 # 现有重症
self.icuRelative = 0 # 较昨日重症病例新增
self.confirmed = 0 # 累计确诊
self.confirmedRelative = 0 # 较昨日累计确诊新增
self.overseasInput = 0 # 累计境外输入
self.overseasInputRelative = 0 # 较昨日累计境外输入新 增
self.cured = 0 # 累计治愈
self.curedRelative = 0 # 较昨日累计治愈新增
self.died = 0 # 累计死亡
self.diedRelative = 0 # 较昨日累计死亡新增
self.updatedTime = 0 # 发布时间
# 返回元组
def get_inside_summary_tuple(self):
return ((self.curConfirm, self.curConfirmRelative, self.asymptomatic, self.asymptomaticRelative, \
self.unconfirmed, self.unconfirmedRelative, self.icu, self.icuRelative, self.confirmed, \
self.confirmedRelative, self.overseasInput, self.overseasInputRelative, self.cured, self.curedRelative, \
self.confirmedRelative, self.overseasInput, self.overseasInputRelative, self.cured,
self.curedRelative, \
self.died, self.diedRelative, self.updatedTime))
# 输出接口
def __str__(self):
return '%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s' % (
self.curConfirm, self.curConfirmRelative, self.asymptomatic, self.asymptomaticRelative, self.unconfirmed,
self.unconfirmedRelative, self.icu, self.icuRelative, self.confirmed, self.confirmedRelative,
self.overseasInput, self.overseasInputRelative, self.cured, self.curedRelative, self.died, self.diedRelative,
self.updatedTime)
#######################################################################################################
#业务逻辑类
# 爬取国内疫情数据
res=requests.get('https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5')
#解码
res=res.content.decode('utf-8')
dict=json.loads(res) #str->dict
#规范数据
for key in dict:
try:
dict[key] = dict[key].replace('\\', '')
key=key.replace('\\','')
except:
pass
#新生成data字典
data=json.loads(dict['data'])
# 国内疫情数据实例化
# # #赋值
def fetch_inside_summary(data):
insideSummary = InsideSummary()
insideSummary.curConfirm = int(data['chinaTotal']['nowConfirm'])
insideSummary.curConfirmRelative = int(data['chinaAdd']['nowConfirm'])
insideSummary.asymptomatic = int(data['chinaTotal']['noInfect'])
insideSummary.asymptomaticRelative = int(data['chinaAdd']['noInfect'])
insideSummary.unconfirmed = int(data['chinaTotal']['suspect'])
insideSummary.unconfirmedRelative = int(data['chinaAdd']['suspect'])
insideSummary.icu = int(data['chinaTotal']['nowSevere'])
insideSummary.icuRelative = int(data['chinaAdd']['nowSevere'])
insideSummary.confirmed = int(data['chinaTotal']['confirm'])
insideSummary.updatedTime = data['lastUpdateTime']
insideSummary.confirmedRelative = int(data['chinaAdd']['confirm'])
insideSummary.overseasInput = int(data['chinaTotal']['importedCase'])
insideSummary.overseasInputRelative = int(data['chinaAdd']['importedCase'])
insideSummary.cured = int(data['chinaTotal']['heal'])
insideSummary.curedRelative = int(data['chinaAdd']['heal'])
insideSummary.died = int(data['chinaTotal']['dead'])
insideSummary.diedRelative = int(data['chinaAdd']['dead'])
self.curConfirm, self.curConfirmRelative, self.asymptomatic, self.asymptomaticRelative,
self.unconfirmed,
self.unconfirmedRelative, self.icu, self.icuRelative, self.confirmed, self.confirmedRelative,
self.overseasInput, self.overseasInputRelative, self.cured, self.curedRelative, self.died,
self.diedRelative,
self.updatedTime)
def get_text():# 爬取国内疫情数据文本
res = requests.get('https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5')
res = res.content.decode('utf-8')
dict = json.loads(res) # str->dict
# 规范数据
for key in dict:
try:
dict[key] = dict[key].replace('\\', '')
key = key.replace('\\', '')
except:
pass
data = json.loads(dict['data'])
return data
# 国内疫情数据赋值
def fetch_inside_summary():
dataf=get_text()
insideSummary = class_InsideSummary()
insideSummary.curConfirm = int(dataf['chinaTotal']['nowConfirm'])
insideSummary.curConfirmRelative = int(dataf['chinaAdd']['nowConfirm'])
insideSummary.asymptomatic = int(dataf['chinaTotal']['noInfect'])
insideSummary.asymptomaticRelative = int(dataf['chinaAdd']['noInfect'])
insideSummary.unconfirmed = int(dataf['chinaTotal']['suspect'])
insideSummary.unconfirmedRelative = int(dataf['chinaAdd']['suspect'])
insideSummary.icu = int(dataf['chinaTotal']['nowSevere'])
insideSummary.icuRelative = int(dataf['chinaAdd']['nowSevere'])
insideSummary.confirmed = int(dataf['chinaTotal']['confirm'])
insideSummary.updatedTime = dataf['lastUpdateTime']
insideSummary.confirmedRelative = int(dataf['chinaAdd']['confirm'])
insideSummary.overseasInput = int(dataf['chinaTotal']['importedCase'])
insideSummary.overseasInputRelative = int(dataf['chinaAdd']['importedCase'])
insideSummary.cured = int(dataf['chinaTotal']['heal'])
insideSummary.curedRelative = int(dataf['chinaAdd']['heal'])
insideSummary.died = int(dataf['chinaTotal']['dead'])
insideSummary.diedRelative = int(dataf['chinaAdd']['dead'])
return insideSummary
##########################################################################################################
#存储数据于数据库
#保存国内疫情概况数据
def insert(res,ds):
# 创建连接,并且返回连接对象)
conn =pymysql.connect(host = ds[0],user = ds[1],passwd = ds[2],db = ds[3])
# 保存国内疫情概况数据
def insert(res):
# 创建连接,并且返回连接对象
conn = pymysql.connect(host='localhost', user='root', db='covid19', passwd='kfq991122')
# 创建游标对象
cursor = conn.cursor()
date = data['lastUpdateTime'].split(' ',1)[0]
print(date)
sql = 'delete from home_realtime_datas where updatedTime like "%s"'%(date+'%')
print('The update was successful')
date = data['lastUpdateTime']
sql = 'delete from home_realtime_datas where updatedTime like "%s"' % (date + '%')
print('delete old_insidesummary_datas successful')
try:
cursor.execute(sql)
conn.commit()
except Exception as e:
print(e)
sql='insert into home_realtime_datas(curConfirm,curConfirmRelative,asymptomatic,asymptomaticRelative,unconfirmed,unconfirmedRelative,icu,icuRelative,confirmed,confirmedRelative,overseasInput,overseasInputRelative,cured,curedRelative,died,diedRelative,updatedTime) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
sql = 'insert into home_realtime_datas(curConfirm,curConfirmRelative,asymptomatic,asymptomaticRelative,unconfirmed,unconfirmedRelative,icu,icuRelative,confirmed,confirmedRelative,overseasInput,overseasInputRelative,cured,curedRelative,died,diedRelative,updatedTime) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
try:
cursor.execute(sql, res)
conn.commit()
print("+++ save_insidesummary_datas successful")
print('+++ save_outsideSummary_datas, data len: %d' % len(res))
except Exception as e:
print(e)
print('+++ save_province_datas is over.')
print('+++ save_insidesummary_datas fail.')
print('+++ save_insidesummary_datas is over.')
cursor.close()
conn.close()
insert(fetch_inside_summary(data).get_inside_summary_tuple(),ds)
conn = pymysql.connect(host = ds[0],user = ds[1],passwd = ds[2],db = ds[3])
cursor = conn.cursor()
sql = 'select * from home_realtime_datas'
cursor.execute(sql)
results = cursor.fetchall()
print(results)
########InsideSummary__main__####################
data = get_text()
insert(fetch_inside_summary().get_inside_summary_tuple())
ds=['localhost','root','20Z00t10x28_my','covid19']
ds=['localhost','root','kfq991122','covid19']
while(True):
Inside(ds)
InsideSummary(ds)
Outside(ds)
OutsideSummary(ds)
InsideSummary(ds)
time.sleep(3600)
Loading…
Cancel
Save