吳裕雄--天生自然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)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM