Seite 1 von 1

Entfernungstabelle

Verfasst: Sonntag 2. November 2008, 15:15
von ChrisSt
Hallo,

Ich bräuchte hier mal etwas Hilfe bitte.

Ein Bekannter hat mir folgenden Code geschrieben, damit werden automatisch Abfragen bei Google Maps gestartet und die Entfernung in min und km ausgegeben.

Code: Alles auswählen

import urllib
import re
import time

km = re.compile(r"<b>(\d*,?.?\d*) km</b>")
minuten = re.compile(r"about <b>(\d*) mins?</b>")
stunden_minuten = re.compile(r"about <b>(\d*) hours? (\d*) mins?</b>")

PLZ_A = [70191]
PLZ_B = [70191, 67663]

res = []
for plz_a in PLZ_A:
  for plz_b in PLZ_B:
    print "Bestimme Entfernung von %s nach %s ..." % (plz_a, plz_b)
    data = urllib.urlopen("http://maps.google.com/maps?q=from:%s+Germany+to:%s+Germany" % (plz_a, plz_b)).read()
    entfernung = float(km.search(data).group(1).replace(',','.'))
    stud_min = stunden_minuten.search(data)
    if stud_min:
      zeit = 60 * int(stud_min.group(1)) + int(stud_min.group(2))
    else:
      stud_min = minuten.search(data)
      if stud_min:
        zeit = int(stud_min.group(1))
      else:
        zeit = 0
    print "  ist:", entfernung
    res += [(plz_a, plz_b, entfernung, zeit)]

print
print "Pythonformat:"
print res
print
print "Fuer TK: (auch in Datei ausgabe.txt)"
output = file('ausgabe.txt', 'w')
print >>output, '"PLZ A";"PLZ B";"Entfernung";"Fahrzeit in min"'
print >>output, '\n'.join(["%s;%s;%s;%s" % x for x in res])
output.close()
print '\n'.join(["%s;%s;%s;%s" % x for x in res])
print
print "Warte 30 sec"
#time.sleep(30)
Das Problem ist jetzt, dass Postleitzahlen leider IRGENDWO in der Pampa verortet werden (ich nehme an im Schwerpunkt des durch diese PLZ abgedeckten Gebiets) und daher teilweise unsinnige Ergebnisse herauskommen.

Meine Frage: kann der Code umgeschrieben werden, sodass statt der reinen PLZ immer "PLZ Ort" abgefragt wird? also z.B. "80331 München"? Bei dem jetzigen Code kommt dabei ein SyntaxError: invalid syntax.

Ich kenne mich leider selbst mit python 0,0 aus ...

Danke für Eure Hilfe!
Chris

Verfasst: Sonntag 2. November 2008, 15:59
von DasIch
Dir ist klar dass das nicht erlaubt ist?

Verfasst: Sonntag 2. November 2008, 16:14
von Sr4l
Zeile 10 und 11 wie folgt zu ersetzen sollte schon funktionieren

Code: Alles auswählen

PLZ_A = ["70191+Stuttgart"]
PLZ_B = ["70191+Stuttgart", "67663+Kaiserslautern"] 
Aber wie DasIch bereits sagte ist das automatische Abrufen von Googleseiten nicht erlaubt, wenn man nicht die von Google dafür gedachten Schnittstellen nutzt, also Benutzung auf eigene Gefahr.

Guck dir das mal an: http://code.google.com/apis/maps/
Wo bei da du kein Python kannst wird dir das wenig nutzen, also schick es deinem Kumpel der dir den Code geschrieben hat ;-)

Danke

Verfasst: Montag 3. November 2008, 13:18
von ChrisSt
wusste nicht, dass das nicht erlaubt ist ...

danke für den Hinweis!