Использование urllib и minidom для получения XML-данных

Я пытаюсь получить данные из службы XML... вот этой.

http://xmlweather.vedur.is/?op_w=xml&type=forec&lang=is&view=xml&ids=1

Я использую urrlib и minidom, и я не могу заставить его работать. Я использовал minidom с файлами, а не с URL.

Это код, который я пытаюсь использовать

xmlurl = 'http://xmlweather.vedur.is'
xmlpath = xmlurl + '?op_w=xml&type=forec&lang=is&view=xml&ids=' + str(location)
xmldoc = minidom.parse(urllib.urlopen(xmlpath))

Может кто-нибудь помочь мне?


person user358620    schedule 28.07.2010    source источник


Ответы (4)


Следующее должно работать (или, по крайней мере, дать вам четкое представление о том, что происходит не так):

from xml.dom.minidom import parse
import urllib

xmlurl = 'http://xmlweather.vedur.is'
xmlpath = xmlurl + '?op_w=xml&type=forec&lang=is&view=xml&ids=' + str(location)
try:
    xml = urllib.urlopen(xmlpath)
    dom = parse(xml)
except e as Exception:
    print(e)
person Jungle Hunter    schedule 28.07.2010
comment
Работает для моего приложения, размещенного в Google Apps. - person Jungle Hunter; 28.07.2010

Функция parse() ищет файл, и вы даете ему строку. Существует еще один класс, называемый parsestring().

пытаться:

from xml.dom.minidom import parseString
import urllib2
xml = urllib2.urlopen(xmlpath)
dom = parseString(xml.read())
person Simon C    schedule 26.09.2013

Попробуй это:

f = urllib.urlopen(xmlpath)
html = f.read()
xmldoc = minidom.parse(html)
person Martin    schedule 28.07.2010

Я только что делал что-то подобное и наткнулся на ваш вопрос.

В моем случае я думал, что minidom.parse не работает, потому что я получал синтаксические ошибки. Оказывается, синтаксические ошибки были в моем xml-документе, хотя трассировка не сделала это очень ясным.

Если вы получаете синтаксические ошибки с minidom.parse или minidom.parseString, обязательно проверьте исходный файл.

person Hovis Biddle    schedule 17.06.2011