一.基本介绍:

开发背景:自从2020年新冠疫情发生后,至今为止的相关疫情数据新闻已经是非常的巨大了,我们无时不在在用数据尝试帮助我们解剖全球的疫情状况。由此可见,新冠疫情数据的新闻报道数量与国内疫情发展变化的状态是基本同步的。为此,本项目是对全国及全球的疫情数据进行实时的爬取,可以更清楚、更直观地了解到目前疫情全国及全球的发展趋势。

爬取网站:https://news.qq.com/zt2020/page/feiyan.htm#/

功能介绍:爬取实时疫情数据,并做成三个表格以及可视化图片,效果如图:

ps:本项目由两部分组成,本文章只有生成页面,图形可视化生成柱形图及饼状图由我的另一个队员完成,查看请点击这里:https://blog.csdn.net/qq_45760547/article/details/121659849)

二.功能实现:

1.进入网站,打开开发者模式,解析页面并得到三个要爬取的网址:

2.用requests请求相对应页面以得到数据并将三个请求请求封装成函数:

3.观察并解析获取到的json数据并同时将其放入表格之中:

(此处只分享其中一个表,中国各省疫情数据表,其他两个表的过程类似,再封装两个相应函数即可)

(1)创建表格框架

(2)清洗数据并使用循环将清洗好的数据存入Excel

(3)保存表格到指定路径

该部分完整函数如下:

4.书写main函数,运行创建的函数:

运行效果截图:

该部分完整代码如下:

import requests
import xlwings as xw
import json
import time#爬取网站 https://news.qq.com/zt2020/page/feiyan.htm#/
# 中国各省数据
cn_url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=&_=%d' % int(time.time() * 1000)
# 中国每日
china_url = 'https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=chinaDayList,chinaDayAddList,nowConfirmStatis,provinceCompare'
# 外国
forei_url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard'# 请求中国各省疫情数据
def get_cn_data(page_cn):try:resp = requests.get(page_cn,headers = h)if resp.status_code == 200:return json.loads(resp.json()['data'])except requests.exceptions.ConnectionError as e:print('Error', e.args)# 请求中国每日疫情数据
def get_china_page(page_china):try:response = requests.get(page_china,headers = h)if response.status_code == 200:return response.json()['data']except requests.exceptions.ConnectionError as e:print('Error', e.args)#请求国外疫情数据
def get_foreign_page(page_forei):try:resp = requests.get(forei_url,headers = h)if resp.status_code == 200:return resp.json()['data']except requests.exceptions.ConnectionError as e:print('Error', e.args)#解析各省数据并生成表格
def table_cn(items_cn):app = xw.App(visible=True, add_book=False)wb = app.books.add()  # 打开Excelsht = wb.sheets['Sheet1']  # 建表sht.range('A1').value = '省份'sht.range('B1').value = '日期'sht.range('C1').value = '累计确诊'sht.range('D1').value = '累计死亡'sht.range('E1').value = '累计治愈'sht.range('F1').value = '现有确诊'sht.range('G1').value = '当日新增确诊'sht.range('H1').value = '治愈率'sht.range('I1').value = '死亡率'for i in range(34):province_data = []province_data = items_cn['areaTree'][0]['children']province_name = province_data[i]['name'] # 省份sht.range(f'A{i + 2}').value = province_nameprovince_date =items_cn['lastUpdateTime'].split(' ')[0]  # 当前日期sht.range(f'B{i + 2}').value = province_dateprovince_confirm = json.dumps(province_data[i]['total']['confirm'])  # 累计确诊sht.range(f'C{i + 2}').value = province_confirmprovince_dead = json.dumps(province_data[i]['total']['dead'])  # 累计死亡sht.range(f'D{i + 2}').value = province_deadprovince_heal = json.dumps(province_data[i]['total']['heal'])  # 累计治愈sht.range(f'E{i + 2}').value = province_healprovince_nowConfirm = json.dumps(province_data[i]['total']['nowConfirm'])  # 现有确诊sht.range(f'F{i + 2}').value = province_nowConfirmprovince_confirm_add = json.dumps(province_data[i]['today']['confirm'])  # 当日新增确诊sht.range(f'G{i + 2}').value = province_confirm_addhealRate = province_data[i]['total']['healRate']  # 治愈率sht.range(f'H{i + 2}').value = healRatedeadRate = province_data[i]['total']['deadRate']  # 死亡率sht.range(f'I{i + 2}').value = deadRatewb.save(f'D:\\A疫情数据\\中国各省疫情数据.xlsx')wb.close()print("中国各省疫情数据表已存储至指定路径")app.quit()# 解析中国每日疫情数据并做成表格
def table_china_day(items_china):app = xw.App(visible=True, add_book=False)wb = app.books.add()sht = wb.sheets('Sheet1')  # 建表sht.range('A1').value = '日期'sht.range('B1').value = '当日新增'sht.range('C1').value = '累计确诊'sht.range('D1').value = '累计治愈'sht.range('E1').value = '累计死亡'for i in range(60):item_dayadds = items_china['chinaDayAddList']item_days = items_china['chinaDayList']item_dayadd = item_dayadds[i]item_day = item_days[i]year = item_dayadd['y']month, day = item_dayadd['date'].split('.')date = year + '-' + month + '-' + daysht.range(f'A{i + 2}').value = datechina_confirm_add = item_dayadd['confirm']sht.range(f'B{i + 2}').value = china_confirm_addchina_confirm = item_day['confirm']sht.range(f'C{i + 2}').value = china_confirmchina_heal = item_day['heal']sht.range(f'D{i + 2}').value = china_healchina_dead = item_day['dead']sht.range(f'E{i + 2}').value = china_deadwb.save(f'D:\\A疫情数据\\中国每日疫情数据.xlsx')wb.close()print("中国每日疫情数据表已存储至指定路径")app.quit()#解析国外疫情数据并生成表格
def parse_forei_page(items_forei):app = xw.App(visible=True, add_book=False)wb = app.books.add()  # 打开Excelsht = wb.sheets['Sheet1']  # 建表sht.range('A1').value = '国家'sht.range('B1').value = '日期'sht.range('C1').value = '累计确诊'sht.range('D1').value = '累计死亡'sht.range('E1').value = '累计治愈'sht.range('F1').value = '现有确诊'sht.range('G1').value = '当日新增确诊'for i in range(217):item_forei = []item_forei = items_forei['WomAboard'][i]int_country = item_forei['name']  # 国家sht.range(f'A{i + 2}').value = int_countryforei_confirm = item_forei['confirm']  # 累计确诊人数sht.range(f'C{i + 2}').value = forei_confirmforei_dead = item_forei['dead']  # 累计死亡人数sht.range(f'D{i + 2}').value = forei_deadforei_heal = item_forei['heal']  # 累计治愈人数sht.range(f'E{i + 2}').value = forei_healforei_nowConfirm = item_forei['nowConfirm']  # 现有确诊人数sht.range(f'F{i + 2}').value = forei_nowConfirmforei_confirm_add = item_forei['confirmAdd']  # 新增确诊人数sht.range(f'G{i + 2}').value = forei_confirm_addyear = item_forei['y'] # 当前年month, day = item_forei['date'].split('.')  # 当前月,日forei_date = year + '-' + month + '-' + day #日期sht.range(f'B{i + 2}').value = forei_datewb.save(f'D:\\A疫情数据\\外国各国疫情数据.xlsx')wb.close()print("外国各国疫情数据表已存储至指定路径")app.quit()
def main():cn_data = get_cn_data(cn_url)cn_table = table_cn(cn_data)china_data = get_china_page(china_url)day_table = table_china_day(china_data)forei_data = get_foreign_page(forei_url)forei_table = parse_forei_page(forei_data)
if __name__ == '__main__':main()

第一次做的爬虫期末项目,有不对的地方还请大神指教!!!1

python爬虫爬取腾讯网站——实时疫情数据并生成Excel表格相关推荐

  1. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

    Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...

  2. Python爬虫---爬取腾讯动漫全站漫画

    Python爬虫---爬取腾讯动漫全站漫画 操作环境 网页分析 明确目标 提取漫画地址 提取漫画章节地址 提取漫画图片 编写代码 导入需要的模块 获取漫画地址 提取漫画的内容页 提取章节名 获取漫画源 ...

  3. Python爬虫 爬取腾讯视频评论内容

    Python爬虫 爬取腾讯视频评论内容 腾讯视频评论内容在源码里是不可见,所以要使用抓包分析. 可安装fiddler代理服务器实现. 下面爬了腾讯视频评论内容(不包括回复),及发表评论者的id.昵称和 ...

  4. 详细实例:用python爬虫爬取幽默笑话网站!(建议收藏)

    前言: 今天为大家带来的内容是详细实例:用python爬虫爬取幽默笑话网站!(建议收藏),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下! 爬取网站为 ...

  5. python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中

    我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...

  6. Python爬虫爬取伯乐在线网站信息

    一.环境搭建 1.创建环境 执行pip install scrapy安装scrapy 使用scrapy startproject ArticleSpider创建scrapy项目 使用pycharm导入 ...

  7. 利用爬虫爬取看看豆网站站的数据信息

    其实很早我就开始关注爬虫技术,这两天特别学习了一下,并且做了一个简单的demo.爬取了看看豆网站的数据信息.总共11751本书,爬取了不到3个小时,基本每秒爬取1条.速度慢的原因主要是单线程,使用my ...

  8. Python爬虫爬取美剧网站

    一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了. 但是,作为一个宅dia ...

  9. Python爬虫爬取古诗文网站项目分享

    作为一个靠python自学入门的菜鸟,想和大家分享自己写的第一个也是目前为止唯一一个爬虫代码 写爬虫要具备的能力基础:python入门基础,html5基础知识,然后这边用的是scrapy框架,所以还要 ...

最新文章

  1. 优化XCode的编译速度
  2. 2019年末,10 位院士对 AI 的深度把脉(上)
  3. centos7安装配置ELK(Elasticsearch+Logstash+Kibana)
  4. Python开发【Part 11】:线程与进程
  5. Luogu P2341 [HAOI2006]受欢迎的牛
  6. XML文件解析--Python
  7. 你也能用英伟达GAN造脸了:官方实现有了,高清数据集也开源了
  8. CSDN积分获取规则
  9. SQLyog v12.09 (64 bit) 注册码
  10. IC卡读写器c++builder源代码续
  11. Android计分器课程设计,比赛计分器课程设计.doc
  12. 思岚激光雷达A1使用
  13. 企业搭建网站主要流程以及六个基本步骤
  14. 【机器视觉】——平面测量实际尺寸(像素尺寸转物理尺寸)
  15. python:实现convolve卷积算法(附完整源码)
  16. 他是年薪几十万的微软工程师,现在却在成都街头收破烂......
  17. 方正飞鸿:OA系统先进性如何在工作流中体现
  18. Java网络编程——基本网络支持
  19. 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐
  20. arcgis里dem填洼_基于多尺度窗口的DEM局部填洼方法

热门文章

  1. 计算机网络使用双绞线连接时,什么情况下,网线需要一头接586A另一头接589B?...
  2. 哪款电脑WiFi共享软件好用
  3. html鼠标出现下划线,鼠标移上链接出现下划线
  4. Redis解决数据一致性方案
  5. matlab netcdf 栅格,用matlab生成GMT可以使用的netcdf文件
  6. 自己的微信小程序学习笔记【3】——第三方UI库Lin-Ui的加载及使用
  7. 在微信小程序中image标签src后面使用三元运算符
  8. 18、EL表达式、JSP标签、JSTL标签、自定义标签
  9. 正面有Android手机常用的三枚虚拟按键
  10. macOS Mojave(软件篇):Google Chrome for Mac 右键失效问题