Python爬取中國天氣網中的蘇州天氣

2021-08-26 15:05:56 字數 4552 閱讀 8287

我選擇的**是中國天氣網中的蘇州天氣,準備抓取最近7天的天氣以及最高/最低氣溫 

程式開頭我們新增:

# coding : utf-8
這樣就能告訴直譯器該py程式是utf-8編碼的,源程式中可以有中文。

要引用的包:

requests:用來抓取網頁的html源** 

csv:將資料寫入到csv檔案中 

random:取隨機數 

time:時間相關操作 

socket和http.client 在這裡只用於異常處理 

beautifulsoup:用來代替正則式取原始碼中相應標籤中的內容 

urllib.request:另一種抓取網頁的html源**的方法,但是沒requests方便(我一開始用的是這一種)

獲取網頁中的html**:

header是requests.get的乙個引數,目的是模擬瀏覽器訪問 

header 可以使用chrome的開發者工具獲得,具體方法如下: 

開啟chrome,按f12,選擇network 

重新訪問該**,找到第乙個網路請求,檢視它的header 

timeout是設定的乙個超時時間,取隨機數是因為防止被**認定為網路爬蟲。 

然後通過requests.get方法獲取網頁的源**、 

rep.encoding = 『utf-8』是將源**的編碼格式改為utf-8(不該源**中中文部分會為亂碼) 

下面是一些異常處理 

返回 rep.text

獲取html中我們所需要的字段:

這裡我們主要要用到beautifulsoup 

beautifulsoup 文件

首先還是用開發者工具檢視網頁原始碼,並找到所需字段的相應位置

找到我們需要欄位都在 id = 「7d」的「div」的ul中。日期在每個li中h1 中,天氣狀況在每個li的第乙個p標籤內,最高溫度和最低溫度在每個li的span和i標籤中。 

感謝joey_ko指出的錯誤:到了傍晚,當天氣溫會沒有最高溫度,所以要多加乙個判斷。

**如下:

def get_data(html_text):

final =

bs = beautifulsoup(html_text, "html.parser") # 建立beautifulsoup物件

body = bs.body # 獲取body部分

data = body.find('div', ) # 找到id為7d的div

ul = data.find('ul') # 獲取ul部分

li = ul.find_all('li') # 獲取所有的li

for day in li: # 對每個li標籤中的內容進行遍歷

temp =

date = day.find('h1').string # 找到日期

inf = day.find_all('p') # 找到li中的所有p標籤

if inf[1].find('span') is none:

temperature_highest = none # 天氣預報可能沒有當天的最高氣溫(到了傍晚,就是這樣),需要加個判斷語句,來輸出最低氣溫

else:

temperature_highest = inf[1].find('span').string # 找到最高溫

temperature_highest = temperature_highest.replace('℃', '') # 到了晚上**會變,最高溫度後面也有個℃

temperature_lowest = inf[1].find('i').string # 找到最低溫

temperature_lowest = temperature_lowest.replace('℃', '') # 最低溫度後面有個℃,去掉這個符號

return final

寫入檔案csv:將資料抓取出來後我們要將他們寫入檔案,具體**如下:

def write_data(data, name):

file_name = name

with open(file_name, 'a', errors='ignore', newline='') as f:

f_csv = csv.writer(f)

f_csv.writerows(data)

主函式:

if __name__ == '__main__':

url =''

html = get_content(url)

result = get_data(html)

write_data(result, 'weather.csv')

然後執行一下: 

生成的weather.csv檔案如下: 

總結一下,從網頁上抓取內容大致分3步: 

1、模擬瀏覽器訪問,獲取html源**

2、通過正則匹配,獲取指定標籤中的內容

3、將獲取到的內容寫到檔案中

剛學python爬蟲,可能有些理解有錯誤的地方,請大家批評指正,謝謝!

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

由於一些需要,想要獲取今天的天氣資料,於是又撿起了python寫了個爬蟲用來獲取中國天氣網上的氣象資料。由於我需要的資料比較簡單,因為我只需要北京地區當天的溫度 最低溫度和最高溫度 和天氣,因此 部分比較簡單,下面就來講講這個爬取的過程。第一步 網頁分析 要進行爬蟲設計,首先得分析網頁的請求過程。首...

Python爬取中國天氣網指定城市天氣

功能 完整 import pandas as pd import requests import re 建立乙個字典儲存中國天氣網城市 def createcitycode fh r text 中國天氣網城市 csv data pd.read csv fh,engine python data da...

Python 爬取中國天氣網天氣並通過郵箱定時傳送

獲取天氣資訊指令碼如下,usr bin python3 coding utf 8 import re import requests from bs4 import beautifulsoup import io import sys r requests.get timeout 30 r.rais...