如何使用python获取Metar数据

时间:2015-07-20 23:18:28

标签: python

所以我想编写一个python代码,它将仅使用最新的Metar并将其吐出来。这里的诀窍是,这个网址不断更新,但我仍然希望它只采用最新的Metar并将其吐出而忽略其他以前的Metars。

到目前为止,我所拥有的代码是:

import urllib2

import re

URL="http://www.ogimet.com/display_metars2.php?lang=en&lugar=kewr&tipo=SA&ord=REV&nil=SI&fmt=html&ano=2015&mes=07&day=20&hora=17&anof=2015&mesf=08&dayf=19&horaf=18&minf=59&send=send"

f = urllib2.urlopen(URL)

data = f.read()

r = re.compile('<pre>(.*)</pre>', re.I | re.S | re.M)

print r.findall(data)

当我运行它时,它会返回所有Metars。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您的正则表达式不正确,.*正在捕获所有内容 - 包括<\pre>标记。当我使用正则表达式进行此类解析时,我通常使用<tag>([^<]*)形式,其中该组匹配除<之外的任何字符,该字符表示下一个标记;显然,这不是一个超级强大的解决方案,但通常足以做到这一点。另外,你在正则表达式中不需要那些标志。在您的情况下,您将拥有:

r=re.compile(`<pre>([^<]*)`)

其次,re.findall返回匹配列表。在Python中,列表使用方括号进行索引,索引从零开始;如果要打印列表的第一个元素,可以调用

print r.findall(data)[0]