2014-07-25 168 views
-5

我想從這個YouTube視頻學習Python:https://www.youtube.com/watch?v=RrPZza_vZ3wPython腳本不起作用

在視頻中他們已經給觀衆一個腳本來運行:

">>> import urllib" 

">>> u = urllib.urlopen('http://ctabustracker.com/bustime/map/getBusesForRoute.jsp?route=22')" 

">>> data = u.read()" 

">>> f = open('rt22.xml','wb')" 

">>> f.write(data)" 

">>> f.close()" 

其拉從網站獲取數據並將其保存在xml文件中。但是,當我檢查XML文件,我只得到這個:XML分析錯誤:找不到元素

+0

你用什麼代碼解析? –

+0

@PadraicCunningham我不知道解析是什麼意思。我使用IDLE for python 2.7.6並使用firefox打開xml文件 – user3125707

+1

我實際上一直在觀看視頻,您的代碼獲取xml文件就好了,所以問題必須在下一部分,我添加了我使用的代碼,使用它與視頻一起使用,或者作爲對自己的代碼的參考,我很抱歉,我沒有時間給它添加評論,但它非常簡單,希望能幫助你一點/ –

回答

0

我非常確定這是視頻所需的所有代碼,它可能有助於作爲參考。

import urllib 
import webbrowser 
import time 
from xml.etree.ElementTree import parse 

u = urllib.urlopen("http://ctabustracker.com/bustime/map/getBusesForRoute.jsp?route=22") 
data = u.read() 

with open("rt22.xml", "wb") as f: 
    f.write(data) 
    f.close() 

office_lat = 41.980262 
doc = parse("rt22.xml") 


def distance(lat1, lat2): 
    'Return approx miles between lat1 and lat2' 
    return 69 * abs(lat1 - lat2) 


def check_bus_location(): 
    for bus in doc.findall("bus"): 
     if bus.findtext("lat") >= office_lat: 
      latitude = float(bus.findtext("lat")) 
      longitude = float(bus.findtext("lon")) 
      bus_id = (bus.findtext("id")) 
      direction = bus.findtext("d") 
      north_buses = [[bus_id, latitude, longitude]] 
      if direction.startswith("North"): 
       print('%s %s %0.2f miles' % (bus_id, direction, distance(latitude, office_lat))) 
       for bus in north_buses: 
        if distance(float(latitude), office_lat) < 0.5: 
         print(webbrowser.open(
          'http://maps.googleapis.com/maps/api/staticmap?size=500x500&sensor=false&markers=|%f,%f' % (
           latitude, longitude))) 


while True: 
    check_bus_location() 
    time.sleep(10) 
+0

謝謝,但我該如何運行此代碼?我是否必須在IDLE後面行中輸入它? – user3125707

+0

更好地輸入它,並嘗試通過添加打印語句並使用代碼作爲參考來觀看視頻來了解它在做什麼,不要僅僅複製粘貼或它會打敗目的!當你理解它,你可以運行它在腳本或任何你請 –

+0

謝謝它的工作方式。我只輸入直到「doc = parse(」rt22.xml「)」並獲得所需的輸出。你能否解釋爲什麼它不能在早期工作? – user3125707