人成在线免费视频|久久久久成人国产免费|亚洲成a人片4444|初尝人妻少妇中文字幕XX|久久综合婷婷噜噜综合网站|粉嫩小泬无遮挡久久久久久|国产精品午夜无码AV天美传媒|欧美日韩专区国产精品一区二区

資訊

精準(zhǔn)傳達(dá) ? 有效溝通

從品牌網(wǎng)站建設(shè)到網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃,從策略到執(zhí)行的一站式服務(wù)

不知道天氣咋樣?一起用Python爬取天氣數(shù)據(jù)分析告訴你

來(lái)源:公司資訊 | 2021.08.17

前語(yǔ)
今日咱們共享一個(gè)小案例,獲取氣候數(shù)據(jù),進(jìn)行可視化剖析,帶你直觀了解氣候狀況!

一、中心功能設(shè)計(jì)
整體來(lái)說(shuō),咱們需求先對(duì)我國(guó)氣候網(wǎng)中的氣候數(shù)據(jù)進(jìn)行爬取,保存為csv文件,并將這些數(shù)據(jù)進(jìn)行可視化剖析展示。

拆解需求,大致能夠整理出咱們需求分為以下幾步結(jié)束:

通過(guò)爬蟲(chóng)獲取我國(guó)氣候網(wǎng)7.20-7.21的降雨數(shù)據(jù),包含城市,風(fēng)力方向,風(fēng)級(jí),降水量,相對(duì)濕度,空氣質(zhì)量。
對(duì)獲取的氣候數(shù)據(jù)進(jìn)行預(yù)處理,剖析河南的風(fēng)力等級(jí)和風(fēng)向,制造風(fēng)向風(fēng)級(jí)雷達(dá)圖。
依據(jù)獲取的溫度和濕度制造溫濕度相關(guān)性剖析圖,進(jìn)行溫度、濕度對(duì)比剖析。
依據(jù)獲取的各城市的降雨量,可視化近24小時(shí)的每小時(shí)時(shí)段降水狀況。
制造各城市24小時(shí)的累計(jì)降雨量。




依據(jù)對(duì)數(shù)據(jù)剖析,回來(lái)的json格式數(shù)據(jù),不難發(fā)現(xiàn):

101180101便是代表城市編號(hào)
7天的氣候預(yù)告數(shù)據(jù)信息在div標(biāo)簽中并且id=“7d”
日期、氣候、溫度、風(fēng)級(jí)等信息都在ul和li標(biāo)簽
網(wǎng)頁(yè)結(jié)構(gòu)咱們上面現(xiàn)已剖析好了,那么咱們就能夠來(lái)著手爬取所需求的數(shù)據(jù)了。獲取到一切的數(shù)據(jù)資源之后,能夠把這些數(shù)據(jù)保存下來(lái)。

請(qǐng)求網(wǎng)站:

氣候網(wǎng)的網(wǎng)址:http://www.weather.com.cn/weather/101180101.shtml。假如想爬取不同的區(qū)域只需修改畢竟的101180101區(qū)域編號(hào),前面的weather代表是7天的網(wǎng)頁(yè)。

def getHTMLtext(url):
"""請(qǐng)求獲得網(wǎng)頁(yè)內(nèi)容"""
try:
r = requests.get(url, timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding
print("Success")
return r.text
except:
print("Fail")
return" "
1
2
3
4
5
6
7
8
9
10
11


處理數(shù)據(jù):

選用BeautifulSoup庫(kù)對(duì)剛剛獲取的字符串進(jìn)行數(shù)據(jù)提取。獲取咱們需求的風(fēng)力方向,風(fēng)級(jí),降水量,相對(duì)濕度,空氣質(zhì)量等。

def get_content(html,cityname):
"""處理得到有用信息保存數(shù)據(jù)文件"""
final = []  # 初始化一個(gè)列表保存數(shù)據(jù)
bs = BeautifulSoup(html, "html.parser")  # 創(chuàng)建BeautifulSoup方針
body = bs.body
data = body.find('div', {'id': '7d'})    # 找到div標(biāo)簽且id = 7d
# 下面爬取當(dāng)天的數(shù)據(jù)
data2 = body.find_all('div',{'class':'left-div'})
text = data2[2].find('script').string
text = text[text.index('=')+1 :-2] # 移除改var data=將其變?yōu)閖son數(shù)據(jù)
jd = json.loads(text)
dayone = jd['od']['od2'] # 找到當(dāng)天的數(shù)據(jù)
final_day = []      # 寄存當(dāng)天的數(shù)據(jù)
count = 0
for i in dayone:
temp = []
if count <=23:
temp.append(i['od21']) # 增加時(shí)刻
temp.append(cityname+'市') # 增加城市
temp.append(i['od22']) # 增加當(dāng)時(shí)時(shí)刻溫度
temp.append(i['od24']) # 增加當(dāng)時(shí)時(shí)刻風(fēng)力方向
temp.append(i['od25']) # 增加當(dāng)時(shí)時(shí)刻風(fēng)級(jí)
temp.append(i['od26']) # 增加當(dāng)時(shí)時(shí)刻降水量
temp.append(i['od27']) # 增加當(dāng)時(shí)時(shí)刻相對(duì)濕度
temp.append(i['od28']) # 增加當(dāng)時(shí)時(shí)刻操控質(zhì)量
# print(temp)
final_day.append(temp)
data_all.append(temp)
count = count +1
# 下面爬取24h的數(shù)據(jù)
ul = data.find('ul')                     # 找到一切的ul標(biāo)簽
li = ul.find_all('li')                   # 找到左右的li標(biāo)簽
i = 0                                    # 操控爬取的天數(shù)
for day in li:                          # 遍歷找到的每一個(gè)li
    if i < 7 and i > 0:
        temp = []                        # 暫時(shí)寄存每天的數(shù)據(jù)
        date = day.find('h1').string     # 得到日期
        date = date[0:date.index('日')]  # 取出日期號(hào)
        temp.append(date)
        inf = day.find_all('p')          # 找出li下面的p標(biāo)簽,提取第一個(gè)p標(biāo)簽的值,即氣候
        temp.append(inf[0].string)

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

        if inf[1].find('span') is None:  # 氣候預(yù)告或許沒(méi)有最高氣溫
            tem_high = None
        else:
            tem_high = inf[1].find('span').string  # 找到最高氣溫
        temp.append(tem_low[:-1])
        if tem_high[-1] == '℃':
        temp.append(tem_high[:-1])
        else:
        temp.append(tem_high)

        wind = inf[2].find_all('span') # 找到風(fēng)向
        for j in wind:
        temp.append(j['title'])

        wind_scale = inf[2].find('i').string # 找到風(fēng)級(jí)
        index1 = wind_scale.index('級(jí)')
        temp.append(int(wind_scale[index1-1:index1]))
        final.append(temp)
    i = i + 1
return final_day,final

—— 靈通云微信公眾號(hào) ——

熱門(mén)標(biāo)簽

上一條———————

下一條———————

十七年 建站經(jīng)驗(yàn)

多一份參考,總有益處

聯(lián)系靈通云,免費(fèi)獲得專(zhuān)屬《策劃方案》及報(bào)價(jià)

咨詢(xún)相關(guān)問(wèn)題或預(yù)約面談,可以通過(guò)以下方式與我們聯(lián)系

業(yè)務(wù)熱線(xiàn):400-688-6062 / 大客戶(hù)專(zhuān)線(xiàn)   南通:15818561755