Python crawls national epidemic data and writes it to mysql

Python crawls national epidemic data and writes it to mysql

1. Realize the effect

Insert picture description here

2. Implementation code
import pymysql
import requests
import re
import json
from time import sleep
def A():
    try:
        url = "https://services9.arcgis.com/N9p5hsImWXAccRNI/arcgis/rest/services/Nc2JKvYFoAEOFCG5JSI6/FeatureServer/2/query?f=json&where=1%3D1&returnGeometry=false&spatialRel=esriSpatialRelIntersects&outFields=*&orderByFields=Confirmed%20desc&resultOffset=0&resultRecordCount=190&resultType=standard&cacheHint=true"
        header = {
            'authority': 'services9.arcgis.com',
            'method': 'GET',
            'scheme': 'https',
            'origin': 'https://gisanddata.maps.arcgis.com',
            'referer': 'https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html',
            'sec-fetch-site': 'same - site',
            'sec-fetch-mode': 'cors',
            'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
        }
        res = requests.get(url, headers = header)
        res = res.text
        res = json.loads(res)
        db = pymysql.connect(host='127.0.0.1', port=3306,user='root',password= '123456',db='yjc')
        cursor = db.cursor()
        cursor.execute('DROP TABLE IF EXISTS info')
        sql = """CREATE TABLE info (
                 Contury varchar(25) PRIMARY KEY,
                 Confirmed_num varchar(25),
                 Active_num varchar(25),
                 Recovered_num varchar(25),
                 Dead_num varchar(25))"""
        cursor.execute(sql)
        for i in res['features']:
            L = []
            sleep(1)
            Contury = i['attributes']['Country_Region']
            Confirmed_num = i['attributes']['Confirmed']
            Active_num = i['attributes']['Active']
            Recovered_num = i['attributes']['Recovered']
            Dead_num = i['attributes']['Deaths']
            L.append(Contury)
            L.append(Confirmed_num)
            L.append(Active_num)
            L.append(Recovered_num)
            L.append(Dead_num)
            print("国家:",Contury,"确诊人数:",Confirmed_num,"现存人数:",Active_num,"治愈人数:",Recovered_num,"死亡人数:",Dead_num)
            sql = "INSERT INTO info(Contury, Confirmed_num, Active_num, Recovered_num, Dead_num) VALUES (%s,%s,%s,%s,%s)"
            cursor.execute(sql,L)
            db.commit()
        db.close()
    except:
        print("error")
A()

Guess you like

Origin blog.csdn.net/qq_45125250/article/details/107966331