溫馨提示×

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

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

如何用Python爬取天氣數(shù)據(jù)并解析溫度值

發(fā)布時(shí)間:2020-08-05 13:45:39 來(lái)源:億速云 閱讀:341 作者:Leah 欄目:編程語(yǔ)言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何用Python爬取天氣數(shù)據(jù)并解析溫度值,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

如何用Python爬取天氣數(shù)據(jù)并解析溫度值

import requests

from lxml import etree

import pandas as pd

import re

url = 'http://www.weather.com.cn/weather1d/101010100.shtml#input'

with requests.get(url) as res:

content = res.content

html = etree.HTML(content)

通過(guò)lxml模塊提取值

lxmlbeautifulsoup解析在某些場(chǎng)合更高效

location = html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()')

temperature = html.xpath('//*[@id="around"]/div/ul/li/a/i/text()')

結(jié)果:

['香河', '涿州', '唐山', '滄州', '天津', '廊坊', '太原', '石家莊', '涿鹿', '張家口', '

', '三河', '北京孔廟', '北京國(guó)子監(jiān)', '中國(guó)地質(zhì)博物館', '月壇公

', '明城墻遺址公園', '北京市規(guī)劃展覽館', '什剎海', '南鑼鼓巷', '天壇公園', '北海公園',

'景山公園', '北京海洋館']

['11/-5°C', '14/-5°C', '12/-6°C', '12/-5°C', '11/-1°C', '11/-5°C', '8/-7°C',

'13/-2°C', '8/-6°C', '5/-9°C', '14/-6°C', '11/-4°C', '13/-3°C'

, '13/-3°C', '12/-3°C', '12/-3°C', '13/-3°C' ]

構(gòu)造DataFrame對(duì)象

df = pd.DataFrame({'location':location, 'temperature':temperature})

print('溫度列')

print(df['temperature'])

正則解析溫度值

df['high'] = df['temperature'].apply(lambda x: int(re.match('(-?[0-9]*?)/-?[0-

9]*?°C', x).group(1) ) )

df['low'] = df['temperature'].apply(lambda x: int(re.match('-?[0-9]*?/(-?[0-

9]*?)°C', x).group(1) ) )

print(df)

詳細(xì)說(shuō)明子字符創(chuàng)捕獲

除了簡(jiǎn)單地判斷是否匹配之外,正則表達(dá)式還有提取子串的強(qiáng)大功能。用() 表示的就是要提取的分組(group)。比如: ^(\d{3})-(\d{3,8})$ 分別定義了兩個(gè)組,可以直接從匹配的字符串中提取出區(qū)號(hào)和本地號(hào)碼。

m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')

print(m.group(0))

print(m.group(1))

print(m.group(2))

# 010-12345

# 010

# 12345

如果正則表達(dá)式中定義了組,就可以在Match 對(duì)象上用group() 方法提取出子串來(lái)。

注意到group(0) 永遠(yuǎn)是原始字符串, group(1) 、group(2) ……表示第12、……個(gè)子串。

最終結(jié)果:

Name: temperature, dtype: object

location temperature high low

0 香河 11/-5°C 11 -5

1 涿州 14/-5°C 14 -5

2 唐山 12/-6°C 12 -6

3 滄州 12/-5°C 12 -5

4 天津 11/-1°C 11 -1

5 廊坊 11/-5°C 11 -5

6 太原 8/-7°C 8 -7

7 石家莊 13/-2°C 13 -2

8 涿鹿 8/-6°C 8 -6

9 張家口 5/-9°C 5 -9

10 保定 14/-6°C 14 -6

11 三河 11/-4°C 11 -4

12 北京孔廟 13/-3°C 13 -3

13 北京國(guó)子監(jiān) 13/-3°C 13 -3

14 中國(guó)地質(zhì)博物館 12/-3°C 12 -3

15 月壇公園 12/-3°C 12 -3

16 明城墻遺址公園 13/-3°C 13 -3

17 北京市規(guī)劃展覽館 12/-2°C 12 -2

18 什剎海 12/-3°C 12 -3

19 南鑼鼓巷 13/-3°C 13 -3

20 天壇公園 12/-2°C 12 -2

21 北海公園 12/-2°C 12 -2

22 景山公園 12/-2°C 12 -2

23 北京海洋館 12/-3°C 12 -3

上述就是小編為大家分享的如何用Python爬取天氣數(shù)據(jù)并解析溫度值了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

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

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

AI