python爬虫-中国疫情爬虫

python爬虫-中国疫情爬虫

下一篇博客是对世界疫情的爬虫,链接为下

世界疫情爬虫.

疫情当前,使用python来对腾讯新闻中的疫情数据进行爬取将数据按照大小用颜色表示在地图中,并将数据保存在excel中。这里爬取的是我国截至目前各省份的确诊人数,代码中的每一步都有对应的注释,如果还不是很清楚的可以看我对两篇爬虫书写的实验报告

中国疫情爬虫.

话不多说直接上代码。

import requests
import json
from pyecharts.charts import Map, Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType, RenderType

# 1.目标网址
url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
# 2.模拟浏览器是先访问url,获取数据,由于数据是json形式,因此将其转化为字典形式,
data = json.loads(requests.get(url).json()['data'])
# 3.从网页源代码中提取数据
china = data['areaTree'][0]['children']
china_total = "确诊:" + str(data['chinaTotal']['confirm']) + \
              " 疑似:" + str(data['chinaTotal']['suspect']) + \
              " 死亡:" + str(data['chinaTotal']['dead']) + \
              " 治愈:" + str(data['chinaTotal']['heal']) + \
              " 更新日期:" + data['lastUpdateTime']
# 4.将中国累计确诊,今日疑似,累计死亡,累计治愈,更新日期保存在数据中,显示在地图中上方
excel0 = [data['chinaTotal']['confirm'], data['chinaTotal']['suspect'], data['chinaTotal']['dead'],
          data['chinaTotal']['heal'], data['lastUpdateTime']]
# 5.将中国各省市名称和对应的确诊人数存放在列表中
data = []
for i in range(len(china)):
    data.append([china[i]['name'], china[i]['total']['confirm']])
# 6.将数据保存在另外,因为在下面会将data赋值为空
excel1 = data
# 7.对确诊人数进行从大到小的排序,使用冒泡排序
for i in range(len(china) - 1):
    for j in range(len(china) - 1 - i):
        if excel1[j][1] < excel1[j + 1][1]:
            excel1[j], excel1[j + 1] = excel1[j + 1], excel1[j]
# 8.调用pyecharts中的Geo中国地图,并进行一些属性的设置,将各个国家的数据赋值到地图中
geo = Geo(init_opts=opts.InitOpts(width="1750px", height="800px", bg_color="#404a59", page_title="全国疫情时事报告",
                                  renderer=RenderType.SVG, theme="white"))  # 设置绘图尺寸,背景色
geo.add_schema(maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="rgb(49,60,72)",
                                                                  border_color="rgb(0,0,0)"))  # 中国地图,地图区域颜色,区域边界颜色
geo.add(series_name="geo", data_pair=data, type_=GeoType.EFFECT_SCATTER)  # 设置地图数据,动画方式位涟漪特效 effect scatter
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False), effect_opts=opts.EffectOpts(scale=6))
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(min_=0, max_=349),
                    title_opts=opts.TitleOpts(title="全国疫情地图", subtitle=china_total, pos_right="10px", pos_left="center",
                                              pos_top="50px"))
geo.render("china_confirm_map.html")




# 9.写入excel文件(注意:如果不需要将数据保存在excel中,以下代码抛弃即可,只复制运行以上代码就行)
import xlsxwriter
import datetime
# 获取当前时间
startTime = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M')
# 设置excel保存的路径和名称
workbook = xlsxwriter.Workbook(
    'D:\python\PycharmProjects\pythonProject\爬虫\china_confirm_webCrawler\china_confirm_' + startTime + '.xlsx')  # 创建一个Excel文件,记得将目录改为自己电脑中的路径
worksheet = workbook.add_worksheet()  # 创建一个sheet
# 将数据写入excel中
title = [U'累计新冠确诊人数', U'疑似人数', U'累计死亡', U'累计治愈', '更新日期']  # 表格title
title1 = ['省份', '累计新冠确诊人数']
worksheet.write_row('A1', title)
worksheet.write_row('A2', excel0)
worksheet.write_row('A3', title1)
for i in range(len(china)):
    worksheet.write_row('A' + str(i + 4), excel1[i])
workbook.close()

爬取成功后会产生一个名叫china_confirm_map.html的html页面以及一个以时间命名的excel文件如china_confirm_2021_03_18_19_23.xlsx。分别打开后得到的结果为下。
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值