Python代码以设定的时间间隔获取数据

时间:2016-06-18 23:40:13

标签: python

如果有人知道如何从http://www.fly.faa.gov/flyfaa/flyfaaindex.jsp?ARPT=SFO&p=0获取,我很好奇  得到这样的结果: http://cdn.abclocal.go.com/three/kgo/weather/links/SFO_DELAYS.txt 结果我最初运作良好,但实际延迟发生,并给了我这个:

2016/7/11 23:35Z<b>30 minutes</b> in length and increasing. ,<b>General        Arrival Delays: </b> Arrival traffic is experiencing airborne delays of 15 minutes or less. ,<strong>KJFK 112251Z 17009KT 10SM FEW055 SCT180 BKN260 23/16 A3008 RMK AO2 SLP186 T02280161</strong>

部分信息被切断了。此外,我很好奇是否有办法摆脱粗体和强者。

这是我的实际代码:    #以下模块在线读取数据并将其导入名为&#34; MetResearch&#34;的电子表格中。    导入numpy为N.    import urllib2    来自lxml import html    来自lxml.etree import tostring    进口时间

而True:

获取金属代码

以字符串

的形式读取整个页面
tree = html.fromstring(urllib2.urlopen('http://aviationweather.gov/adds/metars/index?station_ids=kjfk&std_trans=translated&chk_metars=on&hoursStr=most+recent+only&chk_tafs=on&submit=Submit').read())

然后选择第一个具有METAR信息

的pre元素
td_text = tostring(tree.xpath('//strong')[1]) 

然后打印METAR信息(此处不需要)

#print td_text[:]
tree1 = html.fromstring(urllib2.urlopen('http://www.fly.faa.gov/flyfaa/flyfaaindex.jsp?ARPT=JFK').read())
month= str(time.gmtime()[1])
day= str(time.gmtime()[2])
year= str(time.gmtime()[0])
hour= time.gmtime()[3]
minute= time.gmtime()[4]
td_text1 = tostring(tree1.xpath('//b')[-3])
td_text2 = tostring(tree1.xpath('//b')[-2])
f1=open('/home/jkalb/public_html/JFK.txt','a')
f1.write(month+"/"+day+"/"+year+" "+str(hour)+":"+str(minute)+"Z")
f1.write(td_text1+","+td_text2+","+td_text)
f1.close()


time.sleep(300)

关闭Canopy / VI窗口后,我也无法保持程序运行。

1 个答案:

答案 0 :(得分:0)

如果您想将faa.gov中的内容下载为html,您可能希望这样做:

wget -O x.html http://www.fly.faa.gov/flyfaa/flyfaaindex.jsp?ARPT=SFO&p=0

为了使用python脚本处理x.html文件以获取一些SFO_DELAYS.txt输出文件。

根据您编辑的问题,现在问题是如何每5分钟重复一次。使用cron,这是一个标准的unix(linux)实用程序,在互联网上有很多信息,特别是在unix教程中,例如here。例如:

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
 0,5,10      *          *             *                *            /home/roland/wget.rc

其中wget.rc是一个带有wget命令的小shell脚本。 (我不会尝试在cron选项卡中添加带有重定向等的复杂shell命令。)您可以将0,5,10扩展为...,50,55。

或制作一个无限循环的脚本,例如在python或shell中,将其保存在像get.rc:

这样的文件中
#!/bin/sh
while true
do
  wget ...
  sleep 300
done

使文件可执行:

chmod +x get.rc

运行文件:

./get.rc