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))#存入数据库
  • 相关阅读:
    SQLServer DBA 三十问
    sql server中的日期详解使用(convert)
    【转】对于表列数据类型选择的一点思考
    OLTP与OLAP
    Linux文件目录介绍及文件颜色区别
    [转贴]提问的智慧
    sql server作业管理查看/进程管理查看命令
    T-SQL中的十大注意事项
    正则表达式30分钟入门教程
    SQL中on条件与where条件的区别
  • 原文地址:https://www.cnblogs.com/linmob/p/14610669.html
Copyright © 2011-2022 走看看