鱼C论坛

 找回密码
 立即注册
查看: 1541|回复: 2

[作品展示] 一个爬取疫情数据的小爬虫

[复制链接]
发表于 2020-3-23 14:00:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自学了一个多月的python,这几天学到爬虫了,写一个爬疫情数据的爬虫,
ps:需要安装requests库
import requests

import json

"""请求头文件和url"""
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery3410666023933987975_1584781205909&_=1584781205910'

"""解析网页"""

response = requests.get(url,headers = headers)
data = response.text

dic_data = data[40:-1]
#获取请求到的data文件

dic_data = json.loads(dic_data)
dic_data['data'] = json.loads(dic_data['data'])
#讲请求到的json字符串转换为字典

def country():

    """中国"""
    china = dic_data['data']['chinaTotal']
    #截取字典中的中国部分

    # print(dic_data['data']['lastUpdateTime'])测试用

    """获取确诊治愈等信息"""

    confirm = china['confirm']
    heal = china['heal']
    nowConfirm = china['nowConfirm']
    nowSevere = china['nowSevere']
    importedCase = china['importedCase']
    dead = china['dead']
    time = dic_data['data']['lastUpdateTime']

    #防止输入错误或者未请求到文件报错
    
    try:
        print('截止到%s\n国内\n累计确诊:%s\n累计治愈:%s\n累计死亡:%s\n现有确诊:%s\n现有重症:%s\n境外输入:%s' % (time,confirm,heal,dead,nowConfirm,nowSevere,importedCase))
    except:
        print('出错了!!!')

def provinces():
    """省份"""
    back_data = None
    while back_data == None:
        area_name = input('请输入要查询的省份')
        children = dic_data['data']['areaTree'][0]['children']

        for i in children:

            if i["name"] == area_name:
                back_data = i
                print("查找成功")

    """获取省份数据"""
    nowconfirm = back_data['today']['confirm']
    total = back_data['total']
    confirm = total['confirm']
    dead = total['dead']
    deadRate = total['deadRate']
    heal = total['heal']
    healRate = total['healRate']

    try:
        print(area_name + '\n新增确诊:%d\n累计确诊:%d\n累计死亡:%d\n累计治愈:%d\n死亡率:%s \n治愈率:%s' % (nowconfirm,confirm,dead,heal,deadRate,healRate))

    except:
      print('输入错误!/未查询到数据!!!')

def start():
    while True:
        search = input('请输入需要查询的类型(国家(g)/省市(s)/0为退出):')

        if search == '国家' or search == 'g':
            country()

        elif search == '省市' or search == 's':
            provinces()

        elif search == '0':
            break

        else:
            print('输入错误,请重新输入')

if __name__ == "__main__":
    start()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-23 16:26:55 | 显示全部楼层
老哥, 求教url怎么解析出来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 16:58:26 | 显示全部楼层
yinshujie 发表于 2020-3-23 16:26
老哥, 求教url怎么解析出来的

网页右键检查,找到network刷新一下就看到了
Snipaste_2020-03-23_16-57-13.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 08:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表