您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何用Python爬取天氣數(shù)據(jù)并解析溫度值,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
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模塊提取值
lxml比beautifulsoup解析在某些場(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) ……表示第1、2、……個(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è)資訊頻道。
免責(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)容。