叙白 发表于 2020-3-23 14:00:22

一个爬取疫情数据的小爬虫

自学了一个多月的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
#获取请求到的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']['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()

yinshujie 发表于 2020-3-23 16:26:55

老哥, 求教url怎么解析出来的

叙白 发表于 2020-3-23 16:58:26

yinshujie 发表于 2020-3-23 16:26
老哥, 求教url怎么解析出来的

网页右键检查,找到network刷新一下就看到了
页: [1]
查看完整版本: 一个爬取疫情数据的小爬虫