基于Python獲取城市近7天天氣預(yù)報(bào)
這篇文章主要介紹了基于Python獲取城市近7天天氣預(yù)報(bào),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
首先,我們打開(kāi)中國(guó)天氣網(wǎng),找到黃石市近7天天氣的網(wǎng)頁(yè)。
http://www.weather.com.cn/weather/101200601.shtml

然后按F12開(kāi)始分析網(wǎng)頁(yè)結(jié)構(gòu),找到各個(gè)標(biāo)簽,并分析它們的作用。h1:日期;p:天氣;tem-span:最高溫;tem-i:最低溫;win:風(fēng);em:風(fēng)向;win-i:風(fēng)力。

接下來(lái),我們需要找到它的用戶代理,即User-agent。

分析的差不多了,我們就開(kāi)始寫代碼,下面是我寫的全部代碼及運(yùn)行結(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)錯(cuò)誤
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'): #判斷標(biāo)簽'p','tem'下是否有標(biāo)簽'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ù)報(bào)")
print_wea(wea_list)
if __name__ == '__main__':
main()

在格式輸出這方面,我的這份代碼還存在著很大的缺陷,把它發(fā)出來(lái),歡迎大家跟我一起討論,改進(jìn)。
相關(guān)文章
python 列表推導(dǎo)和生成器表達(dá)式的使用
這篇文章主要介紹了python 列表推導(dǎo)和生成器表達(dá)式的使用方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02
Django靜態(tài)資源URL STATIC_ROOT的配置方法
這篇文章主要介紹了Django靜態(tài)資源URL STATIC_ROOT的配置方法,本文給出配置方法和兩種使用方法,需要的朋友可以參考下2014-11-11
Python使用DEAP庫(kù)實(shí)現(xiàn)簡(jiǎn)單遺傳算法
DEAP是一個(gè)用于快速原型設(shè)計(jì)和實(shí)驗(yàn)的進(jìn)化計(jì)算框架,它支持多種進(jìn)化算法,包括遺傳算法、遺傳編程等,下面我們來(lái)看看如何使用DEAP庫(kù)實(shí)現(xiàn)簡(jiǎn)單遺傳算法吧2025-01-01
Python超簡(jiǎn)單容易上手的畫(huà)圖工具庫(kù)推薦
今天小編給大家分享一款很棒的python畫(huà)圖工具庫(kù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-05-05
python+matplotlib演示電偶極子實(shí)例代碼
這篇文章主要介紹了python+matplotlib演示電偶極子實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01

