绘制图形所需的数据源通常是不固定的,比如,有时我们会需要从网页抓取,
也可能需从文件或数据库中获取。
利用抓取网页数据技术,把我国
1990 年到 2016 年的 GDP 数据抓取出来 ,再利用 MatplotUb 进行绘图显示 。
经搜索发现, http://value500.com/M2GDP.html 网页中有我们所需数据 。

将鼠标移到表格每一行的“年份”处井右击,在弹出的快捷菜单中选择“检查”
选项。

Chrome 会打开网页开发工具,并自动显示鼠标位置的 html 程序代码,我们可根
据 html 代码来抓取表格数据 : 年份数据位于 table 中 第 1 个 td 标签中, gdp 数据们于
表格的中第 3 个 td 标签中。
爬取并绘制我国 GDP1990~2016 数据图
import requests    #导入网页内容抓取包
import matplotlib.pyplot as plt #导入绘图模块,重命名为plt from bs4 import BeautifulSoup as bs #导入网页解析模块,重命名为bs
from pylab import rcParams #导入pylab包 rcParams['font.sans-serif'] = ['SimHei'] #让matplotlib支持简体中文
year = []    #横坐标列表
gdp = [] #纵坐标列表
url = "http://value500.com/M2GDP.html" #设置要在哪个网页抓数据
content = requests.get(url) #获取网页内容
content.encoding='utf-8' #转为utf-8编码
content1=content.text #取得网页内容的text部分
parse = bs(content1,"html.parser") #进行html解析
data1 = parse.find_all("table") #获取所有表元素
rows = data1[19].find_all("tr") #取出包含所需数据的表(网页第20个表)
i=0 #为了不读取表头数据,设置此控制变量
for row in rows:
cols = row.find_all("td") #把每一行表数据存入cols变量
if(len(cols) > 0 and i==0): #如果是第一行,则控制变量加1
i+=1
else: #如果不是第一行,则写入绘图列表
year.append(cols[0].text[:-2]) #取得年份数据(数据的最后两个字符不是数据需去除)并写入图形的year轴
gdp.append(cols[2].text) #把gdp值存入gdp轴 plt.plot(year, gdp, linewidth=2.0) #绘制图形,线宽为2
plt.title("1990~2017年度我国GDP") #设置图形标题
plt.xlabel("年度") #设置x轴标题
plt.ylabel("GDP(亿元)") #设置y轴标题
plt.show() #显示所绘图形 print(year)
print(gdp)

吴裕雄--天生自然python学习笔记:爬取我国 1990 年到 2017年 GDP 数据并绘图显示的更多相关文章

  1. 吴裕雄--天生自然python学习笔记:python用 Bokeh 模块绘制我国 GDP 数据统计图

    现在我们把我国 1990 年到 2017 年的 GDP 数据抓取出 来,井用 Bokeh 绘 出散点统计图 . 由网页爬取所需数据,并用 Bokeh 绘制散点图 . import requests # ...

  2. 吴裕雄--天生自然python学习笔记:python 创建和操作Firebase实时数据库

    Fire base 是专为移动开发提供的后端服务平台, Firebase 数据库与传统数据库不同,它不是用数据表来存储数据, 而是用 Key . Value 的字典型结构来存储数据,所以它不仅 是轻量 ...

  3. 吴裕雄--天生自然python学习笔记:python爬虫PM2.5 实时监测显示器

    PM2.5 对人体的健康影响很大,所以空气中的 PM2.5 实时信息受到越来越多的关注. Python 的 Pandas 套件不但可以自动读取网页中的表格 数据 , 还可对数据进行修改.排序等处理,也 ...

  4. 吴裕雄--天生自然python学习笔记:pandas模块导入数据

    有时候,手工生成 Pandas 的 DataFrame 数据是件非常麻烦的事情,所以我们通 常会先把数据保存在 Excel 或数据库中,然后再把数据导入 Pandas . 另 一种情况是抓 取网页中成 ...

  5. 吴裕雄--天生自然python学习笔记:pandas模块DataFrame 数据的修改及排序

    import pandas as pd datas = [[65,92,78,83,70], [90,72,76,93,56], [81,85,91,89,77], [79,53,47,94,80]] ...

  6. 吴裕雄--天生自然python学习笔记:python 用pyInstaller模块打包文件

    要想在没有安装 Python 集成环境的电脑上运行开发的 Python 程序,必须把 Python 文件打包成 .exe 格式的可执行 文件. Python 的打包工作 PyInstaller 提供了 ...

  7. 吴裕雄--天生自然python学习笔记:python 文件批量查找

    在多个文本文件中查找 我们首先来学习文本文件的查找字符 . 我们通过 os.walk 扩大查找范围, 查找指定目录和子目录下的文件. 应用程序总览 读取 当 前目录及子目录下的所有 PY 和 txt ...

  8. 吴裕雄--天生自然python学习笔记:pandas模块强大的数据处理套件

    用 Python 进行数据分析处理,其中最炫酷的就属 Pa ndas 套件了 . 比如,如果我 们通过 Requests 及 Beautifulsoup 来抓取网页中的表格数据 , 需要进行较复 杂的 ...

  9. 吴裕雄--天生自然python学习笔记:python 用pygame模块动画一让图片动起来

    动画是游戏开发中不可或缺的要素,游戏中的角色只有动起来才会拥有“生命”, 但动画处理也是最让游戏开发者头痛的部分.Pygame 包通过不断重新绘制绘图窗口,短短几行代码就可以让图片动起来! 动画处理程 ...

随机推荐

  1. linux下springboot项目通过jetty发布war包应用

    Linux下jetty发布jar包 1.通过官网下载jetty点击下载https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distributi ...

  2. Thread--线程间通信--管道

    在Java语言中提供了各种各样的输入/输出流Stream,使我们能够方便的对数据进行操作,其中管道流是一种特殊的流,用于在不同线程间直接传送数据.一个线程发送数据到输出管道,另一个线程从输入管道中读数 ...

  3. MyBatis项目报错:The server time zone value '�й�׼' is unrecognized or represents more than one time zone

    问题来源:在部署Spring + MyBatis项目的时候,运行时报错The server time zone value '�й�׼' is unrecognized or represents m ...

  4. 18. docker 容器部署 python-redis

    1. 编写 Vagrantfile 并创建虚拟机 并虚拟机绑定外部 192.168.205.10:8888 ip:port # -*- mode: ruby -*- # vi: set ft=ruby ...

  5. 用eclipse运行算法第四版的BinarySearch

    import java.util.Arrays; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdIn; impo ...

  6. vue执行期间的函数

    先放上vue官方给的函数图

  7. 常用DOS命令(1) color,dir,copy,shutdown,mkdir(md),rmdir(rd),attrib,cd

    1.  color color [attr] 设置默认的控制台前景和背景颜色. attr        指定控制台输出的颜色属性.颜色属性由两个十六进制数字指定 -- 第一个对应于背景,第二个对应于前 ...

  8. AtCoder Beginner Contest 129

    ABCD 签到(A.B.C过水已隐藏) #include<bits/stdc++.h> using namespace std; ; int n,m,ans,f1[N][N],f2[N][ ...

  9. python 拆解包

    Python 拆解包 转自:https://www.jianshu.com/p/22c538a58bcc python中的解包可以这样理解:一个list是一个整体,想把list中每个元素当成一个个个体 ...

  10. E. Arson In Berland Forest(思维,找二维阵列中的矩阵,二分)

    题:https://codeforces.com/contest/1262/problem/E 分析:预处理出阵列中的矩阵,然后二分答案还原题目的烧火过程,判断是否满足要求 #include<b ...