从XML文件中提取数据:count和sum为零

时间:2016-03-22 14:34:55

标签: python xml

我正在用Python编写一个程序来提示输入URL,使用urllib从该URL读取XML数据,然后从XML数据中解析并提取注释计数,计算文件中数字的总和。这是代码:

import urllib
import xml.etree.ElementTree as ET

serviceurl = 'http://maps.googleapis.com/maps/api/geocode/xml?'
sum = 0

while True:    
    address = raw_input('Enter location: ')
    if len(address) < 1 : break

    url = serviceurl + urllib.urlencode({'sensor':'false', 'address': address})
    print 'Retrieving', url
    uh = urllib.urlopen(url)
    data = uh.read()
    print 'Retrieved',len(data),'characters'
    print data
    tree = ET.fromstring(data)

    lst = tree.findall('comments/comment')
    print lst
    print 'Count: ', len(lst)

    for item in lst:
        num = int(item.find('count').text)
        sum = sum + num

    print sum

这是输出:

Enter location: http://python-data.dr-chuck.net/comments_42.xml
Retrieving http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=http%3A%2F%2Fpython-data.dr-chuck.net%2Fcomments_42.xml
Retrieved 107 characters
<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
 <status>ZERO_RESULTS</status>
</GeocodeResponse>

[]
Count:  0
0

我不明白为什么列表为空,这会导致计数和总和为零。有没有人有任何建议?

1 个答案:

答案 0 :(得分:0)

您正在下载this,其中没有评论片段......所以列表为空,因为您无法找到它们。 试试:

url = urllib.urlencode({'sensor':'false', 'address': address})
而是作为测试。 基本上这只是你输入的网址的一个问题。