我来为您详细讲解“Python3监控疫情的完整代码”的完整攻略。
简介
在当前新冠疫情面前,尽可能了解疫情动态变化对我们很有帮助。本文将介绍如何使用Python3编写一个简单的疫情数据监控程序,用以实时获取最新疫情数据,分析并可视化数据。我们将使用的数据源是新浪新闻SinaNews的新冠疫情实时追踪。
步骤
步骤1 下载相关库
首先,为了能够运行本程序,我们需要安装一些第三方库。在终端中运行以下命令,安装相关库:
pip3 install requests
pip3 install beautifulsoup4
pip3 install pyecharts
上述命令分别安装了三个库:
- requests:用于发送HTTP请求,获取网页内容。
- beautifulsoup4:用于解析HTML文档,方便我们从网页中提取数据。
- pyecharts:一个可视化工具库,用于将获取的数据可视化。
步骤2 获取网页内容
首先,我们需要向疫情实时追踪页面发送HTTP请求,获取页面的内容。我们可以使用requests库实现,具体代码如下:
import requests
url = 'https://news.sina.com.cn/zt_d/yiqing0121/'
def get_html(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
try:
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "爬取失败"
上面的代码中,我们定义了一个名为 get_html()
的函数,函数接收一个参数 url
,返回一个字符串类型的变量,表示获取的网页HTML内容。其中,我们设置了请求的headers信息,以模拟浏览器发送请求。
使用以上函数获取到页面的HTML内容后,在处理数据之前,我们使用BeautifulSoup库将其转化为树形结构,方便接下来的数据处理。
from bs4 import BeautifulSoup
html = get_html(url)
soup = BeautifulSoup(html, 'html.parser')
步骤3 解析网页内容,提取数据
现在我们已经获取了网页的HTML内容,并将其转化为了解析树,接下来就需要从中提取我们需要的数据了。
我们可以打开新浪新闻疫情实时追踪页面,使用Chrome浏览器的开发者工具(F12)来确定我们需要的数据所在标签。经过查看,我们可以找到我们所需要的信息都在名为“data”的script标签的内容中。
import re
data_tag = soup.find_all('script', attrs={'id': 'data'})
data_str = str(javascript_tag[0])
# 使用正则表达式提取“data”变量的内容
data = re.search(r'\[.*\]', data_str).group()
在上面的代码中,我们使用正则表达式从script标签中提取名为data的变量内容,存储到data变量中,data变量是一个json格式的字符串。
接下来,我们使用json库将数据转化为Python的字典类型,这样就方便我们进行数据处理和可视化了。
import json
data = json.loads(data)
通过以上步骤,我们已经成功地从页面上抓取了我们所需要的疫情数据,并且转化为了Python字典的数据类型。
步骤4 数据处理和可视化
我们的数据取回来了,接下来就是处理和可视化。这里我们使用pyecharts库来进行数据可视化。先看一下下面的代码:
from pyecharts.charts import Map
province_data = {}
for item in data['listByArea']:
province = item['name']
confirm = item['value']
province_data[province] = confirm
map = Map(title='全国疫情地图', width=1200, height=600)
map.add('累计确诊人数', list(province_data.items()), 'china')
map.render()
这里我们使用Map图来展示全国各省/市的疫情情况。这段代码中,我们从字典中提取每个省份的确诊人数,然后使用Map.add()方法向地图中添加数据。
运行程序,我们可以得到一个以地图为背景的可视化数据图表。
我们再来看一下另一个以柱状图为背景的数据可视化,如下代码所示:
from pyecharts.charts import Bar
city_data = {}
for province in province_data:
city_list = []
if province == '中国':
continue
for item in data['listByArea']:
if item['name'] == province:
for city in item['city']:
city_list.append(city['name'])
city_list.append(city['confirm'])
break
city_data[province] = city_list
bar = Bar(title="全国疫情数据柱状图", width=1200)
for key in city_data:
province_city = []
province_confirm = []
for i in range(0, len(city_data[key]), 2):
province_city.append(city_data[key][i])
province_confirm.append(city_data[key][i+1])
bar.add(key, province_city, province_confirm)
bar.render()
这里我们使用了Bar图来展示全国各个省市的疫情情况。我们可以看到,我们成功地创建了一个以柱状图为背景的,一目了然的全国疫情数据地图。
总结
至此,我们已经完成了对Python3监控疫情的完整代码的攻略。通过以上步骤,我们成功地获取并解析了页面内容,提取出想要的数据,并使用pyecharts库实现了数据的可视化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3监控疫情的完整代码 - Python技术站