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

绘制图形所需的数据源通常是不固定的,比如,有时我们会需要从网页抓取,
也可能需从文件或数据库中获取。
利用抓取网页数据技术,把我国
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)

猜你喜欢

转载自www.cnblogs.com/tszr/p/12028451.html
今日推荐