基于Python獲取城市近7天天氣預(yù)報
這篇文章主要介紹了基于Python獲取城市近7天天氣預(yù)報,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
首先,我們打開中國天氣網(wǎng),找到黃石市近7天天氣的網(wǎng)頁。
http://www.weather.com.cn/weather/101200601.shtml
然后按F12開始分析網(wǎng)頁結(jié)構(gòu),找到各個標簽,并分析它們的作用。h1:日期;p:天氣;tem-span:最高溫;tem-i:最低溫;win:風(fēng);em:風(fēng)向;win-i:風(fēng)力。
接下來,我們需要找到它的用戶代理,即User-agent。
分析的差不多了,我們就開始寫代碼,下面是我寫的全部代碼及運行結(jié)果:
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 '出現(xiàn)異常' #異常處理,防止出現(xiàn)錯誤 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('h1').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) #風(fēng)向,win1-win2 level = day.find('p', 'win').find('i').get_text() #風(fēng)力 weather_list.append([date, wea, tem_l, tem_h, win2, level]) def print_wea(weather_list): s = ' \t' * 3 print(s.join(('日期', '天氣', '最低溫', '最高溫', '風(fēng)向', '風(fēng)力'))) 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天天氣預(yù)報") print_wea(wea_list) if __name__ == '__main__': main()
在格式輸出這方面,我的這份代碼還存在著很大的缺陷,把它發(fā)出來,歡迎大家跟我一起討論,改進。
相關(guān)文章
python神經(jīng)網(wǎng)絡(luò)VGG16模型復(fù)現(xiàn)及其如何預(yù)測詳解
這篇文章主要為大家介紹了VGG16模型的復(fù)現(xiàn)及其詳解(包含如何預(yù)測),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05Python中threading模塊的Lock和RLock區(qū)別詳解
這篇文章主要介紹了Python中threading模塊的Lock和RLock區(qū)別詳解,Lock鎖是Python的原始鎖,在鎖定時不屬于任何一個線程,在調(diào)用了 lock.acquire() 方法后,進入鎖定狀態(tài),lock.release()方法可以解鎖,底層是通過一個函數(shù)來實現(xiàn)的,需要的朋友可以參考下2023-09-09Python3.7將普通圖片(png)轉(zhuǎn)換為SVG圖片格式(網(wǎng)站logo圖標)動起來
這篇文章主要介紹了Python3.7將普通圖片(png)轉(zhuǎn)換為SVG圖片格式并且讓你的網(wǎng)站Logo(圖標)從此”動”起來,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04全面了解Python的getattr(),setattr(),delattr(),hasattr()
下面小編就為大家?guī)硪黄媪私釶ython的getattr(),setattr(),delattr(),hasattr()。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06python?使用turtle實現(xiàn)實時鐘表并生成exe
這篇文章主要為大家詳細介紹了python使用Turtle庫繪制動態(tài)鐘表,并有需要可以生成exe可執(zhí)行文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03解決django.db.utils.IntegrityError:(1048, Column las
這篇文章主要介紹了解決django.db.utils.IntegrityError:(1048, Column last_login cannot be null)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01