創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(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)
通過lxml模塊提取值
lxml比beautifulsoup解析在某些場合更高效
location = html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()')
temperature = html.xpath('//*[@id="around"]/div/ul/li/a/i/text()')
結(jié)果:
['香河', '涿州', '唐山', '滄州', '天津', '廊坊', '太原', '石家莊', '涿鹿', '張家口', '保
定', '三河', '北京孔廟', '北京國子監(jiān)', '中國地質(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對象
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ì)說明子字符創(chuàng)捕獲
除了簡單地判斷是否匹配之外,正則表達(dá)式還有提取子串的強大功能。用() 表示的就是要提取的分組(group)。比如: ^(\d{3})-(\d{3,8})$ 分別定義了兩個組,可以直接從匹配的字符串中提取出區(qū)號和本地號碼。
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 對象上用group() 方法提取出子串來。
注意到group(0) 永遠(yuǎn)是原始字符串, group(1) 、group(2) ……表示第1、2、……個子串。
最終結(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 北京國子監(jiān) 13/-3°C 13 -3
14 中國地質(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)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
分享文章:如何用Python爬取天氣數(shù)據(jù)并解析溫度值-創(chuàng)新互聯(lián)
文章鏈接:http://jinyejixie.com/article40/dpoceo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、品牌網(wǎng)站制作、品牌網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站維護、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)