在python中解析METAR网页

时间:2011-09-11 03:33:39

标签: python parsing

我需要在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 个答案:

答案 0 :(得分: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