用Python解析METAR网页
我需要在一个Python脚本中使用METAR天气信息。我找到了一些资料,地址是http://pypi.python.org/pypi/metar/1.4.0,看起来可以满足我对当前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”这段文字?
1 个回答
2
看一下上面链接返回的原始 HTML
内容,你会发现 METAR 数据被夹在 <code>
标签之间:
<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