Python爬取中國天氣網天氣資料__Python

來源:互聯網
上載者:User

由於一些需要,想要擷取今天的天氣資料,於是又撿起了Python寫了個爬蟲用來擷取中國天氣網上的氣象資料。由於我需要的資料比較簡單,因為我只需要北京地區當天的溫度(最低溫度和最高溫度)和天氣,因此代碼部分比較簡單,下面就來講講這個爬取的過程。

第一步 網頁分析

要進行爬蟲設計,首先得分析網頁的請求過程。首先,開啟中國天氣網首頁,在搜尋方塊中搜尋北京,查看北京地區的天氣,如下圖所示:




發現在今天的資料欄中並沒有我要的最低溫度和最高溫度,於是又選擇了“7天”連結,截圖如下:




這時候我想要的資料(最低溫度、最高溫度)就有了,接下來就該分析網頁的請求過程了。通過對比分析“今天”頁面和“7天”頁面發現,該網站的請求都是簡單的GET的請求。
以請求“7天”頁面為例,請求的URL如下:
URL=“ http://www.weather.com.cn/weather/101010100.shtml”

其中,“weather”代表請求的是“7天”,如果是請求“今天”則是“weather1d“;後面的“101010100”則代表了北京地區的編號。


既然URL已經搞清楚了,那麼就下來就要分析網頁源碼,找到資料在源碼中呈現位置,經過一番尋找,已經定位元據在源碼中的位置,其中天氣資料和溫度資料在兩個p標籤中,而最高溫度資料在span標籤中,最低溫度在i標籤中。




但是這邊需要注意的一個問題是,到了晚上時間,這裡會有一個變化,那就是沒有了最高溫度,在網頁介面呈現的結果為:




在代碼中的呈現結果即為少了一個span標籤,只剩下包含最低溫度資料的i標籤。由於我在資料的應用情境中必須有最高溫度,故為了避免讀取不到最高溫度,我採取的方法是直接利用第二天的最高溫度來代替(雖然比較粗暴)。




到此,網頁的分析工作就結束了,那麼接下來的工作就是擷取資料。

第二步 資料擷取

鑒於Python語言的優雅,本次簡易爬蟲故選用Python+Beautiful Soup 4進行頁面解析。Beauti Soup是一個可以從HTML或XML檔案中提取資料的Python庫,其強大的解析功能,能夠方便快捷的解決很多問題。關於BeautiSoup的相關介紹,大家可以參考官方文檔或是其他檔案,這裡就直接貼出My Code.

from urllib.request import urlopenfrom bs4 import BeautifulSoupimport reresp=urlopen('http://www.weather.com.cn/weather/101010100.shtml')soup=BeautifulSoup(resp,'html.parser')tagToday=soup.find('p',class_="tem")  #第一個包含class="tem"的p標籤即為存放今天天氣資料的標籤try:    temperatureHigh=tagToday.span.string  #有時候這個最高溫度是不顯示的,此時利用第二天的最高溫度代替。except AttributeError as e:    temperatureHigh=tagToday.find_next('p',class_="tem").span.string  #擷取第二天的最高溫度代替temperatureLow=tagToday.i.string  #擷取最低溫度weather=soup.find('p',class_="wea").string #擷取天氣print('最低溫度:' + temperatureLow)print('最高溫度:' + temperatureHigh)print('天氣:' + weather)



程式運行結果如下:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.