• 使用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的缩进规范确实难顶啊

  • 相关阅读:
    k8s 集群多节点 calico指定网卡
    用Python建立最简单的web服务器
    MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比
    转化Excel表格为php配置文件
    dockers的容器删除
    php中csv文件的下载
    Ubuntu下mysql的卸载重装
    centos7的web环境安装配置
    lua随机数函数
    Lua 自定义函数string.split
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/12466220.html
Copyright © 2020-2023  润新知