首先我们介绍一下什么是Python。
什么是Python?
网络Python是一种程序,主要用于搜索引擎,它将一个网站的所有内容与链接进行阅读,并建立相关的全文索引到数据库中,然后跳到另一个网站.样子好像一只大蜘蛛.
当人们在网络上(如google)搜索关键字时,其实就是比对数据库中的内容,找出与用户相符合的.网络Python程序的质量决定了搜索引擎的能力,如google的搜索引擎明显要比百度好,就是因为它的网络Python程序高效,编程结构好.可以这么简单的理解一下Python。即请求网站并且提取自己所需的数据的一个过程。至于怎么如何,将是后面进行学习的内容,暂且不必深究。通过我们的程序,可以代替我们向服务器发送请求,然后进行批量、大量的数据的下载。
我们再来看看Python的基本流程。
Python的基本流程
发起请求:通过url向服务器发起request请求,请求可以包含额外的header信息。
获取响应内容:如果服务器正常响应,那我们将会收到一个response,response即为我们所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)等。
解析内容:如果是HTML代码,则可以使用网页解析器进行解析,如果是Json数据,则可以转换成Json对象进行解析,如果是二进制的数据,则可以保存到文件进行进一步处理。
保存数据:可以保存到本地文件,也可以保存到数据库(MySQL,Redis,Mongodb等)
在了解上面的基本内容后,我们通过疫情数据来加深我们对Python概念的理解。
发送请求
获取数据 网页源代码
解析数据 筛选一些我想用的数据
保存数据 保存成表格
做数据可视化分析
Python完整代码
导入模块
import requests # 第三方模块(发送请求) import re # 正则 import json import csv
然后我们需要选择我们的目标网址。
发送请求
url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_aladin_banner' response = requests.get(url=url, headers=headers)
获取数据
data_html = response.text
解析数据
json_str = re.findall('"component":\[(.*)\],', data_html)[0] json_dict = json.loads(json_str) caseList = json_dict['caseList'] for case in caseList: area = case['area'] # 省份 curConfirm = case['curConfirm'] # 确诊人数 confirmedRelative = case['confirmedRelative'] # 新增人数 confirmed = case['confirmed'] # 累计确诊 crued = case['crued'] # 累计确诊 died = case['died'] # 累计确诊 print(area, curConfirm, confirmedRelative, confirmed, crued, died)
保存数据
with open('data.csv', mode='a', encoding='utf-8', newline='') as f: csv_writer = csv.writer(f)
数据可视化
导入模块
from pyecharts import options as opts from pyecharts.charts import Map import pandas as pd
读取数据
df = pd.read_csv('data.csv', encoding='utf-8')
数据可视化
首先我们看看各地区确诊人数。
china_map = ( Map() .add("现有确诊", [list(i) for i in zip(df['area'].values.tolist(),df['curConfirm'].values.tolist())], "china") .set_global_opts( title_opts=opts.TitleOpts(title="各地区确诊人数"), visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True), ) ) china_map.render_notebook()
各地区死亡率和治愈率
line = ( Line() .add_xaxis(list(df['province'].values)) .add_yaxis("治愈率", df['healRate'].values.tolist()) .add_yaxis("死亡率", df['deadRate'].values.tolist()) .set_global_opts( title_opts=opts.TitleOpts(title="死亡率与治愈率"), ) ) line.render_notebook()
各地区的死亡人数和治愈人数
bar = ( Bar() .add_xaxis(list(df['province'].values)[:6]) .add_yaxis("死亡", df['dead'].values.tolist()[:6]) .add_yaxis("治愈", df['heal'].values.tolist()[:6]) .set_global_opts( title_opts=opts.TitleOpts(title="各地区确诊人数与死亡人数情况"), datazoom_opts=[opts.DataZoomOpts()], ) ) bar.render_notebook()
我们最后写个可视化的全国疫情地图
cofirm, currentCofirm, cured, dead = [], [], [], [] tab = Tab() _map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("累计确诊人数", [list(i) for i in zip(df['area'].values.tolist(),df['confirmed'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=1000, is_piecewise=False, range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000']) ) ) tab.add(_map, '累计确诊') _map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("当前确诊人数", [list(i) for i in zip(df['area'].values.tolist(),df['curConfirm'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=100, is_piecewise=False, range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000']) ) ) tab.add(_map, '当前确诊') _map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("治愈人数", [list(i) for i in zip(df['area'].values.tolist(),df['crued'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=1000, is_piecewise=False, range_color=['#FFFFE0', 'green']) ) ) tab.add(_map, '治愈') _map = ( Map(init_opts=opts.InitOpts(theme='dark', width='1000px')) .add("死亡人数", [list(i) for i in zip(df['area'].values.tolist(),df['died'].values.tolist())], "china", is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="新型冠状病毒全国疫情地图", ), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(is_show=True, max_=50, is_piecewise=False, range_color=['#FFFFE0', '#FFA07A', '#CD5C5C', '#8B0000']) ) ) tab.add(_map, '死亡') tab.render_notebook()
今天的分享就到这里了,我们下期见。