zoukankan      html  css  js  c++  java
  • Python:爬取中国各市的疫情数据并存储到数据库

    import requests
    import pymysql
    import json
    
    def create():
    
        # 连接数据库
        db = pymysql.connect(host = 'localhost', user = 'root', password ='258000', database = 'yiqing',charset='utf8')
    
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
    
        # 使用 execute() 方法执行 SQL,如果表存在则删除
        cursor.execute("DROP TABLE IF EXISTS payiqing")
    
        # 使用预处理语句创建表
        sql = """CREATE TABLE payiqing (
                Id INT PRIMARY KEY AUTO_INCREMENT,
                UpDateTime varCHAR(255),
                Province varchar(255),
                City varchar(255),
                Confirm varchar(255),
                Confirm_add varchar(255),
                Heal varchar(255),
                Dead varchar(255))"""
        #upDateTime,provinse,city,confirm,confirm_add,heal,dead
        cursor.execute(sql)
    
        #关闭数据库连接
        db.close()
    
    def insert(value):
    
        # 连接数据库
        db = pymysql.connect(host = 'localhost', user = 'root', password ='258000', database = 'yiqing',charset='utf8')
    
        # 使用 execute() 方法执行 SQL,如果表存在则删除
        cursor = db.cursor()
    
        # 使用预处理语句插入数据
        sql = "INSERT INTO payiqing(UpDateTime,Province,City,Confirm,Confirm_add,Heal,Dead) VALUES ( %s,%s,%s,%s,%s,%s,%s)"
        #updateDateTime,provinse,city,confirm,confirm_add,heal,dead
    
        try:
            cursor.execute(sql, value)
            db.commit()
            print('插入数据成功')
        except:
            db.rollback()
            print("插入数据失败")
        db.close()
    
    create()  # 创建表
    
    #目标网站
    url = 'http://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
    
    #请求资源,获取相应内容
    resp = requests.post(url)
    
    #打印网页内容 print(resp.text)
    
    # 将响应信息进行json格式化
    #一个从文件加载,一个从内存加载#json.load(filename)#json.loads(string)
    jsonData = json.loads(resp.text)
    data_all = json.loads(jsonData["data"])
    
    #保存全国历史数据
    history = {}
    
    #print(data_all.keys())
    i = data_all["chinaTotal"]
    history = {"lastUpdateTime":data_all["lastUpdateTime"],"confirm":i["confirm"] ,"heal":i["heal"],"dead":i["dead"],"suspect":i["suspect"]}
    #print(history)
    
    #用于存储当日详细数据的集合
    details = []
    upDateTime = data_all["lastUpdateTime"]#储存最近更新时间
    data_province = data_all["areaTree"][0]["children"] #中国各省
    
    #遍历存储
    for pro in data_province:
      provinse = pro["name"]   #省名
      for cit in pro["children"]:
        city = cit["name"]
        confirm = cit["total"]["confirm"]
        confirm_add = cit["today"]["confirm"]
        heal = cit["total"]["heal"]
        dead = cit["total"]["dead"]
        insert((upDateTime,provinse,city,confirm,confirm_add,heal,dead))#存入数据库
  • 相关阅读:
    socket server的N种并发模型
    进程、线程以及Goroutine的区别
    分布式从ACID、CAP、BASE的理论推进
    epoll的理论与IO阻塞机制
    golang面试题知识点总结
    golang中如何进行项目模块及依赖管理
    面对golang中defer,要注意什么?
    Kaggle 学习之旅
    推荐在线学习读书网站
    k8s 的 dashboard 的实践
  • 原文地址:https://www.cnblogs.com/linmob/p/14610669.html
Copyright © 2011-2022 走看看