Entfernungstabelle

Du hast eine Idee für ein Projekt?
Antworten
ChrisSt
User
Beiträge: 2
Registriert: Sonntag 2. November 2008, 15:05

Sonntag 2. November 2008, 15:15

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
DasIch
User
Beiträge: 2452
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Sonntag 2. November 2008, 15:59

Dir ist klar dass das nicht erlaubt ist?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Sonntag 2. November 2008, 16:14

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 ;-)
ChrisSt
User
Beiträge: 2
Registriert: Sonntag 2. November 2008, 15:05

Montag 3. November 2008, 13:18

wusste nicht, dass das nicht erlaubt ist ...

danke für den Hinweis!
Antworten