溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于Python如何獲取城市近7天天氣預(yù)報

發(fā)布時間:2021-04-21 10:06:43 來源:億速云 閱讀:382 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下基于Python如何獲取城市近7天天氣預(yù)報,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Python主要用來做什么

Python主要應(yīng)用于:1、Web開發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲;4、嵌入式應(yīng)用開發(fā);5、游戲開發(fā);6、桌面應(yīng)用開發(fā)。

這篇文章主要介紹了基于Python獲取城市近7天天氣預(yù)報,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

首先,我們打開中國天氣網(wǎng),找到黃石市近7天天氣的網(wǎng)頁。

基于Python如何獲取城市近7天天氣預(yù)報

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

基于Python如何獲取城市近7天天氣預(yù)報

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

基于Python如何獲取城市近7天天氣預(yù)報

分析的差不多了,我們就開始寫代碼,下面是我寫的全部代碼及運(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)錯誤

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'): #判斷標(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ù)報")
  print_wea(wea_list)

if __name__ == '__main__':
  main()

基于Python如何獲取城市近7天天氣預(yù)報

在格式輸出這方面,我的這份代碼還存在著很大的缺陷,把它發(fā)出來,歡迎大家跟我一起討論,改進(jìn)。

以上是“基于Python如何獲取城市近7天天氣預(yù)報”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI