1. 程式人生 > 程式設計 >Python爬蟲爬取杭州24時溫度並展示操作示例

Python爬蟲爬取杭州24時溫度並展示操作示例

本文例項講述了Python爬蟲爬取杭州24時溫度並展示操作。分享給大家供大家參考,具體如下:

散點圖 爬蟲杭州今日24時溫度 https://www.baidutianqi.com/today/58457.htm

  1. 利用正則表示式爬取杭州溫度
  2. 面向物件程式設計
  3. 圖表展示(散點圖 / 折線圖)

匯入相關庫

import requests
import re
from matplotlib import pyplot as plt
from matplotlib import font_manager
import matplotlib

類程式碼部分

class Weather(object):
  def __init__(self):
    self.url = 'https://www.baidutianqi.com/today/58457.htm'
    self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/73.0.3683.75 Safari/537.36'}
  #請求
  def __to_requests(self):
    response = requests.get(url=self.url,headers=self.headers)
    return self.__to_paeser(response.content.decode('utf-8'))
  #解析
  def __to_paeser(self,html):
    #正則表示式 要從資料迴圈的部分寫起 如果從迴圈的父標籤開始,則只會匹配到一個值 即父標籤下的某個標籤,而不是迴圈下的
    pattern = re.compile('<li>.*?<font class="red">(.*?)</font>.*?<font class="blue">(.*?)</font></li>',re.S)
    return re.findall(pattern,html)
    
  #展示
  def __to_show(self,data):
    x = []
    y = []
    for value in data:
      x.append(value[0])
      y.append(int(value[1][-2:]))
    #畫布
    plt.figure(figsize=(15,8),dpi=80)
    #中文 /System/Library/Fonts/PingFang.ttc   C:\Windows\Fonts\simsun.ttc
    my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=18)
    #x y 軸刻度 標籤 區分 y的刻度值/刻度標籤 和 y本身的值
    plt.xticks(fontproperties=my_font,rotation=60)
    y_ticks = ["{}℃".format(i) for i in range(min(y),max(y)+1)]
    plt.yticks(range(min(y),max(y)+1),y_ticks,fontproperties=my_font,rotation=60)
    # x y 軸說明
    plt.xlabel('時間',color='orange',rotation=60,fontproperties=my_font)
    plt.ylabel('溫度',fontproperties=my_font)
    #網格
    plt.grid(alpha=0.4)
    #標題
    plt.title('當天時刻溫度低值變化',fontproperties=my_font)
    #圖例
    plt.legend(prop=my_font)
    #作畫
#     plt.scatter(x,y,label='2019-08-22')
    plt.plot(x,color='red')
    plt.show()
  #操作
  def to_run(self):
    result = self.__to_requests()
    self.__to_show(result)

呼叫並展示

if __name__ == '__main__':
  wt = Weather()
  wt.to_run()

在這裡插入圖片描述
在這裡插入圖片描述

更多關於Python相關內容可檢視本站專題:《Python Socket程式設計技巧總結》、《Python正則表示式用法總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。