鱼C论坛

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

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

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

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

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

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

  2. import json

  3. """请求头文件和url"""
  4. 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'}
  5. url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery3410666023933987975_1584781205909&_=1584781205910'

  6. """解析网页"""

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

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

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

  14. def country():

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

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

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

  20.     confirm = china['confirm']
  21.     heal = china['heal']
  22.     nowConfirm = china['nowConfirm']
  23.     nowSevere = china['nowSevere']
  24.     importedCase = china['importedCase']
  25.     dead = china['dead']
  26.     time = dic_data['data']['lastUpdateTime']

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

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

  39.         for i in children:

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

  43.     """获取省份数据"""
  44.     nowconfirm = back_data['today']['confirm']
  45.     total = back_data['total']
  46.     confirm = total['confirm']
  47.     dead = total['dead']
  48.     deadRate = total['deadRate']
  49.     heal = total['heal']
  50.     healRate = total['healRate']

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

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

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

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

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

  62.         elif search == '0':
  63.             break

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

  66. if __name__ == "__main__":
  67.     start()
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-23 16:26:55 | 显示全部楼层
老哥, 求教url怎么解析出来的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

网页右键检查,找到network刷新一下就看到了
Snipaste_2020-03-23_16-57-13.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 21:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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