python爬取疫情信息

疫情可视化首先需要对疫情信息进行爬取

  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表中数据:(省份)

 

原文地址:https://www.cnblogs.com/znjy/p/14905954.html