2011-09-11 49 views
3

我需要在python腳本中使用METAR天氣信息。我發現http://pypi.python.org/pypi/metar/1.4.0,它似乎應該爲我目前的METARs所需要的。不過,我也需要使用歸檔的天氣信息。解析python中的METAR網頁

我發現Navlost.eu,這似乎工作得很好,我需要什麼。例如, http://www.navlost.eu/aero/metar/?icao=KBOS&dt0=2010-07-14+02%3A00%3A00&c=1&rt=metar

python METAR模塊訪問一個文本文件並解析它。如何以類似的方式解析此網頁,以便我只抓取本示例中的「KBOS 140154Z 15006KT 8SM -RA OVC034 23/22 A2994」文本?

回答

2

望着通過上面的鏈接返回的原始HTML,你可以看到嵌套<code>標籤之間的METAR數據:

<p><hr/><br/><code>KBOS 140154Z 15006KT 8SM -RA OVC034 23/22 A2994</code><br/><br/> 

所以使用Python的正則表達式來得到它:

import urllib2 
import re 

URL="http://www.navlost.eu/aero/metar/?icao=KBOS&dt0=2010-07-14+02%3A00%3A00&c=1&rt=metar" 
f = urllib2.urlopen(URL) 
data = f.read() 

r = re.compile('<code>(.*)</code>', re.I | re.S | re.M) 
print r.findall(data)[0] 

正則表達式在re.compile行中找到,而(.*)表示您對括號之間的所有字符感興趣。函數r.findall返回與表達式匹配的所有字符串,而[0]只是第一個。

以下是輸出:

KBOS 140154Z 15006KT 8SM -RA OVC034 23/22 A2994