我需要在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元模块访问一个文本文件并解析它。如何以类似的方式解析此网页,以便仅获取本例中的“KBOS 140154Z 15006KT 8SM-RA OVC034 23/22 A2994”文本?

最佳答案

查看上述链接返回的rawHTML,可以看到嵌套在<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

关于python - 用python解析METAR网页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7376152/

10-10 19:58