Python:爬取中国各市的疫情数据并存储到数据库

摘要:
ImportRequestsimportpymysqlimportjsondefcreate():#连接到数据库db=pymysqlConnect(host='localhost',user='root',password='258000',database='yiqing',charset='tf8')#使用cursor()方法创建游标对象cursor=db。光标()#

Python:爬取中国各市的疫情数据并存储到数据库第1张

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))#存入数据库

免责声明:文章转载自《Python:爬取中国各市的疫情数据并存储到数据库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SolidEdge如何自动标注尺寸多种图像格式相互转换工具的开发(附源代码)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【02】Django框架:模型与站点

一、设计模型 1.创建应用   在一个项目中可以创建一到多个应用,每个应用进行一种业务处理。  创建应用的命令: python manage.py startapp 应用名 2.定义模型类   ①打开models.py文件,定义模型类。  ②引入包 from django.db import models   ③模型类继承自models.Model类。  ...

RabbitMQ生产者发送消息确认

在使用RabbitMQ的时候,可以通过消息的持久化操作来解决因为服务器的异常崩溃而导致的消息丢失,除此之外,我们还会遇到一个问题,当消息的生产者将消息发送出去以后,消息到底有没有到达服务器呢?如果不进行特殊的配置,默认情况下发送消息的操作是不会返回任何消息给生产者的,也就是默认情况下是不知道消息有没有正确地到达服务器。如果在消息到达服务器之前已经丢失,持久...

如何区分一个功能是前端还是后台的问题?

怎么区分一个功能是前端还是后台的问题?记得以前面试的时候,好几家公司问过这个问题。 问题主要有以下几种: 1.界面UI布局显示问题--前端 2.页面字段校验问题--前端 3.页面功能实现问题--前端?后台? 前2个很容易确定是前端的问题。第3个牵扯到前端和后台共同处理,所以区分时需要理清楚。谷歌浏览器F12开发者工具Network一栏。 如下图:点击【搜索...

python3.6下载安装使用

######## 1.首先到python的官方网站 https://www.python.org/ 2.鼠标放在Download上。点击下面对应的型号,我的是Windows 3.点击Windows到此页面。点击3.6版本 4,4.往下拉。一直到Files部分。选择对应自己电脑型号,我的是X86 64位的 下载可执行的安装程序.exe结尾的, Windo...

python电脑结构、ARP协议、单位转换、字节bytes、字符串与字节关系等知识总结

目录 一、计算机五大部件 二、程序运行的过程 三、ARP协议 四、单位转换 五、数据类型:字节bytes 六、字符串和字节的关系 一.计算机五大部件 电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备、输出设备、存储器、运算器和控制器。 我们把键盘和鼠标叫输入设备。 输入设备: 向电脑输入数据和信息的设备。除了键盘。除了键盘鼠标,其他输入设备还包括触...

Python接口自动化之yaml配置文件

在自动化过程中,需要使用配置文件储存数据,比如数据库信息、账号信息、域名等。 其中,yaml文件是一种配置文件类型,相比较ini,conf配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据。 以下主要介绍yaml语法、yaml存储数据,封装类读写yaml配置文件。 yaml介绍及使用 01 yaml简介 YAML语言(/ˈjæməl/...