您好,登錄后才能下訂單哦!
小編給大家分享一下基于Python如何獲取城市近7天天氣預報,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Python主要應用于:1、Web開發;2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發;5、游戲開發;6、桌面應用開發。
這篇文章主要介紹了基于Python獲取城市近7天天氣預報,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
首先,我們打開中國天氣網,找到黃石市近7天天氣的網頁。
然后按F12開始分析網頁結構,找到各個標簽,并分析它們的作用。h2:日期;p:天氣;tem-span:最高溫;tem-i:最低溫;win:風;em:風向;win-i:風力。
接下來,我們需要找到它的用戶代理,即User-agent。
分析的差不多了,我們就開始寫代碼,下面是我寫的全部代碼及運行結果:
import re import requests from bs4 import BeautifulSoup def get_page(url): #獲取URL try: headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'} r = requests.get(url,headers) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return '出現異常' #異常處理,防止出現錯誤 def parse_page(html, weather_list): soup = BeautifulSoup(html, 'html.parser') day_list = soup.find('ul', 't clearfix').find_all('li') for day in day_list: date = day.find('h2').get_text() wea = day.find('p', 'wea').get_text() if day.find('p', 'tem').find('span'): #判斷標簽'p','tem'下是否有標簽'span',以此判斷是否有最高溫 tem_h = day.find('p', 'tem').find('span').get_text() else: tem_h = '' #最高溫 tem_l = day.find('p', 'tem').find('i').get_text() #最低溫 win1 = re.findall('(?<= title=").*?(?=")', str(day.find('p','win').find('em'))) win2 = '-'.join(win1) #風向,win1-win2 level = day.find('p', 'win').find('i').get_text() #風力 weather_list.append([date, wea, tem_l, tem_h, win2, level]) def print_wea(weather_list): s = ' \t' * 3 print(s.join(('日期', '天氣', '最低溫', '最高溫', '風向', '風力'))) for i in weather_list: print(i[0], '\t',i[1],'\t\t\t',i[2],'\t\t\t',i[3],'\t\t',i[4],'\t\t',i[5]) #按格式輸出 def main(): url = 'http://www.weather.com.cn/weather/101200601.shtml' html = get_page(url) wea_list = [] parse_page(html, wea_list) print("\t\t\t\t\t\t\t\t\t黃石市近7天天氣預報") print_wea(wea_list) if __name__ == '__main__': main()
在格式輸出這方面,我的這份代碼還存在著很大的缺陷,把它發出來,歡迎大家跟我一起討論,改進。
以上是“基于Python如何獲取城市近7天天氣預報”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。