所以我想编写一个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。
提前致谢!
答案 0 :(得分:0)
您的正则表达式不正确,.*
正在捕获所有内容 - 包括<\pre>
标记。当我使用正则表达式进行此类解析时,我通常使用<tag>([^<]*)
形式,其中该组匹配除<
之外的任何字符,该字符表示下一个标记;显然,这不是一个超级强大的解决方案,但通常足以做到这一点。另外,你在正则表达式中不需要那些标志。在您的情况下,您将拥有:
r=re.compile(`<pre>([^<]*)`)
其次,re.findall
返回匹配列表。在Python中,列表使用方括号进行索引,索引从零开始;如果要打印列表的第一个元素,可以调用
print r.findall(data)[0]