Skocz do zawartości
Forum Programowanie

Polecane posty

Nie bede ukrywal ze jestem bardzo poczatkujacy jesli w kwestii programowania. Natknalem sie na takie zadanko:

 

Chicago Transit Authority (CTA) prowadzi stronę (http://ctabustracker.com), na której można śledzić autobusy miejskie (większość z nich ma GPS). Ta strona ma też nieoficjalne API, którym można dostać się do trasy autobusu w XMLu.

 

Można użyć URLa http://ctabustracker.com/bustime/map/getStopPredictions.jsp aby dowiedzieć się jak długo przyjdzie człowiekowi czekać na przystanku na pewien autobus. Trzeba jedynie podać numer trasy (np. 49) i id przystanku (np. 8207).

Można to w prosty sposób przetestować:

 

>>> import urllib

>>> fields = { 'stop' : '8207',

'route':'49'}

>>> parms = urllib.urlencode(fields)

>>> u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)

>>> resp = u.read()

>>> print resp

... zobacz co wróci ...

W pliku bustrack.py napisz funkcję bus_prediction(route,stop) która przyjmuje jako argumenty nr trasy i id przystanku, zadaje zapytanie do powyżej opisanej strony i zwraca pobrane dane XML.

 

Użyj tej funkcji, aby dowiedzieć się jak długo turyści odwiedzający dom Baracka Obamy będą musieli czekąć na autobus linii 6 na przystanku 5037 (Lake Park & Hyde Park Blvd), aby wrócić do centrum.

 

>>> print bus_prediction("6","5037")

... look at the output ...Chicago Transit Authority (CTA) prowadzi stronę (http://ctabustracker.com), na której można śledzić autobusy miejskie (większość z nich ma GPS). Ta strona ma też nieoficjalne API, którym można dostać się do trasy autobusu w XMLu.

 

Można użyć URLa http://ctabustracker.com/bustime/map/getStopPredictions.jsp aby dowiedzieć się jak długo przyjdzie człowiekowi czekać na przystanku na pewien autobus. Trzeba jedynie podać numer trasy (np. 49) i id przystanku (np. 8207).

Można to w prosty sposób przetestować:

 

>>> import urllib

>>> fields = { 'stop' : '8207',

'route':'49'}

>>> parms = urllib.urlencode(fields)

>>> u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)

>>> resp = u.read()

>>> print resp

... zobacz co wróci ...

W pliku bustrack.py napisz funkcję bus_prediction(route,stop) która przyjmuje jako argumenty nr trasy i id przystanku, zadaje zapytanie do powyżej opisanej strony i zwraca pobrane dane XML.

 

 

 

 

 

Czy ktos bylby w stanie i zechcial mi pomoc?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Gdzie natknąłeś się na to zadanie?

 

Całą implementację masz podaną na tacy, teraz musisz tylko ubrać to w funkcję ;)

 

Dałem dwie wersje funkcji, z parsowaniem i bez parsowania XML:

import urllib
import xml.etree.ElementTree as ET

def bus_prediction(route,stop):
   fields = { 'stop' : str(stop),    'route':str(route)}
   parms = urllib.urlencode(fields)
   u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)
   resp = u.read()
   return resp

def bus_prediction_with_xml_process(route,stop):
   fields = { 'stop' : str(stop),    'route':str(route)}
   parms = urllib.urlencode(fields)
   u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)

   tree = ET.parse(u)
   root = tree.getroot()
   data=root.findall('pre')

   result=[]
   for pre in data:
  	 result.append("Przystanek: %s(%s); Odjazd za: %s"%(pre.find('fd').text,pre.find('v').text,pre.find('pt').text))

   return result

print bus_prediction_with_xml_process("6","5037")

 

BTW. uważaj pisząc o Pythonie. Na tym Forum za to się dostaje bana. Już wiem! Ten temat to prowokacja od admina! :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

×