使用Python进行疫情数据爬取

写在前面

为了使用python学习爬取疫情数据,提前学习了python中的语法和各种存储结构(dirt),若没有这些基础很难看懂python代码,更别提写了

题目

题目和上一篇博客一样,爬取疫情数据,这次我们爬取腾讯的数据,使用python来进行爬取。

思路分析

  • 1.分析网页的网络数据,取得请求头,并用python的requests包进行解析和读取。
  • 2.分析解析出的包,进行提取和操作
  • 3.将数据提出并存到数据库
  • 涉及知识点:python对mysql的操作,python的爬取

效果截图

代码展示

import pymysql
import requests
import json
# 放入要爬的url
url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
# 设置header做一个防爬机制
header = {"user-agent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Mobile Safari/537.36"}
# 获取response的json
response = requests.get(url, headers=header)
# 取得数据词典
data = json.loads(response.content.decode())
data_str = data['data']
data_json = json.loads(data_str)
# 取出各个省和市的dict
areaTree = data_json['areaTree'][0]['children']
# 连接数据库
db = pymysql.connect(host = 'localhost', port=3306, user='root', password='abc456', db='yiqing', charset='utf8')
#使用cursor方法生成一个游标
cursor = db.cursor()
# 更新时间
lastUpdateTime = data_json['lastUpdateTime']
for province_list in areaTree:
    province_name = province_list['name']
    confirm_total = province_list['total']['confirm']
    suspect_total = province_list['total']['suspect']
    dead_total = province_list['total']['dead']
    heal_total = province_list['total']['heal']
    for itemChild in province_list['children']:
        city_name = itemChild['name']
        confirm = itemChild['total']['confirm']
        suspect = itemChild['total']['suspect']
        dead = itemChild['total']['dead']
        heal = itemChild['total']['heal']
        # 插入数据

        sql = "insert into pythontest2_copy1(id, province_name, city_name, confirm, suspect, dead, heal,lastUpdateTime) values ({},'{}','{}','{}','{}','{}','{}','{}')".format(0, province_name, city_name, confirm, suspect, dead, heal,lastUpdateTime)
        cursor.execute(sql)
    sql_total = "insert into pythontest2_copy1(id, province_name, city_name, confirm, suspect, dead, heal,lastUpdateTime) values ({},'{}',{},'{}','{}','{}','{}','{}')".format(
        0, province_name, 0, confirm_total, suspect_total, dead_total, heal_total, lastUpdateTime)
    cursor.execute(sql_total)
    db.commit()

实际完成时间表

预估时间:两个小时

日期 开始时间 结束时间 中断时间 净时间 活动 备注
3.11 16:00 16:50 20 30 编码前准备
3.11 21:00 21:30 30 编写代码
3.11 21:30 21:45 15 测试
3.11 21:45 21:50 5 整理

缺陷记录表

日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷 描述
3.11 1 1 编码 编码 1min 规范缩进 缩进不够规范,出现错误
3.11 2 2 编码 测试 2min 修改sql语句位置 数据库存储的数据与预期的不一致
3.11 3 3 编码 测试 1min 删掉多余的"," sql语句书写不规范,无法插入数据库
3.11 4 4 编码 测试 3min 将string再转成python对象类型 没有正确提取数据

总结

可以很明显的看到用python编写爬虫的简单和简便,不得不感叹各个语言的特性。这里的大部分时间都用在看别人的代码上了,但最后收获也很大。
Ps:python的缩进规范确实难顶啊

原文地址:https://www.cnblogs.com/wushenjiang/p/12466220.html