2016-06-18 9 views
0

Ich bin gespannt, ob jemand weiß, wie man von http://www.fly.faa.gov/flyfaa/flyfaaindex.jsp?ARPT=SFO&p=0 zu bekommen ein Ergebnis wie folgt zu erhalten: http://cdn.abclocal.go.com/three/kgo/weather/links/SFO_DELAYS.txt Das Ergebnis, das ich gut ursprünglich gearbeitet, aber als eine tatsächliche Verzögerung aufgetreten und gab ich diese :Python-Code, um Daten in festgelegten Zeitintervallen zu erhalten

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> 

Ein Teil der Nachricht wurde abgeschnitten. Außerdem bin ich neugierig, ob es einen Weg gibt, die Fettverbrennung ebenso wie die Starken loszuwerden.

Hier ist mein eigentlicher Code: # Die folgenden Module, die Daten online und importieren Sie es in eine Tabelle namens "MetResearch" Import numpy als N Import urllib2 von lxml Import html von lxml.etree Import tostring lesen Importzeit

während True:

dAS IST METAR CODE

Liest die gesamte Seite als String

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()) 

Auswahl dann das erste Pre-Element, das die METAR info hat

td_text = tostring(tree.xpath('//strong')[1]) 

dann die METAR info druckt (nicht notwendig, hier)

#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) 

Ich bin auch Probleme, das Programm zu halten läuft und läuft, sobald ich das Fenster Canopy/VI geschlossen habe.

+0

Fragen fragen uns, empfehlen oder ein Buch, ein Tool, eine Softwarebibliothek, ein Tutorial oder eine andere Off-Site-Ressource zu finden, ist für Stack Overflow off-topic, da sie dazu neigen, eigensinnige Antworten und Spam zu bekommen.Beschreiben Sie stattdessen das Problem und was bisher unternommen wurde, um es zu lösen. –

+0

Ich habe Probleme, meinen Code zu schreiben und brauche ein gutes Beispiel für einen Unix-Befehl/-Code außer wget, um Online-Daten zu erhalten, da ich wget auf der ersten Verbindung versuchte, aber es kam nicht richtig heraus. – user3550783

+0

Mir ist es ja auch nicht ganz klar was das eigentliche Problem ist. Python hat eine ausgezeichnete Unterstützung für XML. – Roland

Antwort

0

Wenn Sie das Zeug von faa.gov als html herunterladen möchten bedeuten zu, könnten Sie dies tun wollen:

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

um die x.html Datei mit Python-Skript zu verarbeiten, einige zu bekommen SFO_DELAYS.txt Ausgabedatei.

Mit Ihrer bearbeiteten Frage besteht das Problem nun darin, dies alle 5 Minuten zu wiederholen. Verwenden Sie entweder cron, ein Standard-Unix-Dienstprogramm (Linux), mit vielen Informationen im Internet, insbesondere in Unix-Tutorials, z. here. Beispiel:

# 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 

Dabei ist wget.rc ein kleines Shell-Skript mit dem Befehl wget. (Ich würde nicht versuchen, einen komplexen Shell-Befehl mit Umleitung usw. in der Cron-Registerkarte zu setzen.) Sie können die 0,5,10 bis zu erweitern, 50,55.

Oder ein Skript mit einer Endlosschleife, z. in Python oder Shell, das ist wie get.rc in einer Datei speichern:

#!/bin/sh 
while true 
do 
    wget ... 
    sleep 300 
done 

die Datei ausführbar machen:

chmod +x get.rc 

Führen Sie die Datei:

./get.rc 
+0

Um dies und die andere Antwort zusammenzufassen. Ich war auf zwei Links beschränkt, also musste ich den gleichen Fly Faa Link machen. Aber ich möchte, dass es alle 5 Minuten Daten bekommt. – user3550783

+0

Warum redigieren Sie nicht Ihre Frage, die "von irgendeinem faa.gov Link sagt" und setzen Sie die genaue URL in den wget Befehl? Wenn meine Antwort nicht das ist, was Sie erwarten, benötigt Ihr Problem noch weitere Erklärungen. – Roland

+0

Ich habe es gerade jetzt bearbeitet. Obwohl der eigentliche Code auf meinem Linux/Unix ein anderer Flughafen ist. – user3550783

Verwandte Themen