Извлекать данные XML используя Пайтон

У меня есть этот код и я нуждаюсь в том, чтобы извлечь графы комментария данных XML, вычислить (http://python-data.dr-chuck.net/comments_228073.xml) сумму чисел в файле и писец сумма.

Мне хотелось бы знать, что делит код, он нуждался в том, чтобы войти, потому что я уже использовал различные коды, чтобы извлекать сумму чисел

import urllib
import xml.etree.ElementTree as ET

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

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)

    results = tree.findall('result')
    lat = results[0].find('geometry').find('location').find('lat').text
    lng = results[0].find('geometry').find('location').find('lng').text
    location = results[0].find('formatted_address').text

    print 'lat',lat,'lng',lng
    print location

5
задан 25.01.2016, 23:47
2 ответа

С этим cГіdigo ты можешь извлекать их nГєmeros внутри tag count, которые я принимаю, это количество комментариев из-за пользователя, и потом складывать их:

import urllib
import xml.etree.ElementTree as ET

url = 'http://python-data.dr-chuck.net/comments_228073.xml'
uh = urllib.urlopen(url)
data = uh.read()
commentinfo = ET.fromstring(data)
count_sum = sum([int(comment.find('count').text) for comment in commentinfo[1]])
print(count_sum)
3
ответ дан 24.11.2019, 14:57

Уже у тебя есть решение Хавьера используя ElementTree, этот модуль может казаться немного сложным для того, чтобы быть использованным сначала. Существуют другие самые простые альтернативы, которые ты мог бы тестировать.


untangle

Модуль untangle обращает XML в объекты Пайтон, преимущество состоит в том, что ты можешь перемещать его прямо унифицированный указатель ресурса. Чтобы устанавливать:

$ pip install untangle

Решение:

import untangle

url = 'http://python-data.dr-chuck.net/comments_228073.xml'
parsed_data = untangle.parse(url)
comments = parsed_data.commentinfo.comments.comment
total = sum([int(comment.count.cdata) for comment in comments])

xmltodict

Модуль xmltodict позволяет тебе работать с XML как будто ты работал с JSON. Чтобы устанавливать:

$ pip install xmltodict

Решение:

import urllib2
import xmltodict

url = 'http://python-data.dr-chuck.net/comments_228073.xml'
data = urllib2.urlopen(url)
parsed_data = xmltodict.parse(data.read())
comments = parsed_data['commentinfo']['comments']['comment']
total = sum([int(comment['count']) for comment in comments])
2
ответ дан 24.11.2019, 14:57
  • 1
    Спасибо C и # 233; sar. Desconoc и # 237; в этот модуль и Вашу работу с XML –  JchG 27.01.2016, 00:58
  • 2
    Что есть tablib??? –  SalahAdDin 05.02.2016, 09:18