来自youtube视频的python脚本不起作用

时间:2014-07-25 19:02:28

标签: python

我正在尝试从此YouTube视频中学习python:https://www.youtube.com/watch?v=RrPZza_vZ3w

在视频中,他们为观众提供了一个可以运行的脚本:

">>> 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解析错误:找不到元素

1 个答案:

答案 0 :(得分: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)