疫情可视化首先需要对疫情信息进行爬取
1 import requests 2 import json 3 import pymysql 4 conn = pymysql.connect(host="localhost", user="root", password="0424wyhhxx", database="yiqing", charset='utf8') 5 6 7 def Down_data(): 8 url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5" 9 headers = { 10 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36' 11 } 12 r = requests.get(url, headers) 13 res = json.loads(r.text) 14 data_res = json.loads(res['data']) 15 return data_res 16 17 18 def Parse_data1(): 19 data = Down_data() 20 # 建立游标 21 cursor = conn.cursor() 22 23 24 sql = 'insert into china(截止时间,全国确诊人数,今日新增确诊,全国疑似,今日新增疑似,全国治愈,今日新增治愈,全国死亡,今日新增死亡) values(%s,%s,%s,%s,%s,%s,%s,%s,%s) ' 25 data = (str(data['lastUpdateTime']), str(data['chinaTotal']['confirm']), str(data['chinaAdd']['confirm']), str(data['chinaTotal']['suspect']), str(data['chinaAdd']['suspect']), str(data['chinaTotal']['heal']), str( 26 data['chinaAdd']['heal']), str(data['chinaTotal']['dead']), str( 27 data['chinaAdd']['dead'])) 28 try: 29 cursor.execute(sql, data) 30 conn.commit() 31 except Exception as e: 32 print('插入数据失败', e) 33 conn.rollback() # 回滚 34 35 # 关闭游标 36 cursor.close() 37 # 关闭连接 38 conn.close() 39 40 41 42 43 def Parse_data2(): 44 data3 = Down_data() 45 data = Down_data()['areaTree'][0]['children'] 46 path = str() 47 48 for i in data: 49 if path in i['name']: 50 for item in i['children']: 51 conn2 = pymysql.connect(host="localhost", user="root", password="0424wyhhxx", database="yiqing", 52 charset='utf8') 53 cursor2 = conn2.cursor() 54 sql2 = 'insert into area(截止时间,地区,确诊人数,新增确诊,治愈,死亡) values(%s,%s,%s,%s,%s,%s) ' 55 data2 =(str(data3['lastUpdateTime']), str(item['name']), str(item['total']['confirm']), str(item['today']['confirm']), str(item['total']['heal']), str(item['total']['dead'])) 56 57 try: 58 cursor2.execute(sql2, data2) 59 conn2.commit() 60 except Exception as e: 61 print('插入数据失败', e) 62 conn2.rollback() # 回滚 63 64 # 关闭游标 65 cursor2.close() 66 # 关闭连接 67 conn2.close() 68 69 70 71 def Parse_data3(): 72 data3 = Down_data() 73 data = Down_data()['areaTree'][0]['children'] 74 path = str() 75 76 for i in data: 77 if path in i['name']: 78 conn3 = pymysql.connect(host="localhost", user="root", password="0424wyhhxx", database="yiqing", 79 charset='utf8') 80 cursor3 = conn3.cursor() 81 sql3 = 'insert into sheng(截止时间,地区,确诊人数,新增确诊,治愈,死亡) values(%s,%s,%s,%s,%s,%s) ' 82 83 data5 =(str(data3['lastUpdateTime']), i['name'], i['total']['confirm'], i['today']['confirm'], i['total']['heal'], i['total']['dead']) 84 85 try: 86 cursor3.execute(sql3, data5) 87 conn3.commit() 88 except Exception as e: 89 print('插入数据失败', e) 90 conn3.rollback() # 回滚 91 92 # 关闭游标 93 cursor3.close() 94 # 关闭连接 95 conn3.close() 96 97 Down_data() 98 Parse_data1() 99 Parse_data2() 100 Parse_data3()
china表中数据:(全国)
area表中数据:(地区)
sheng表中数据:(省份)