Использование urllib и minidom для извлечения данных XML - PullRequest
0 голосов
/ 28 июля 2010

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

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

Я использую urrlib и 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))

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

Ответы [ 4 ]

4 голосов
/ 28 июля 2010

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

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)
1 голос
/ 26 сентября 2013

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

попробовать:

from xml.dom.minidom import parseString
import urllib2
xml = urllib2.urlopen(xmlpath)
dom = parseString(xml.read())
0 голосов
/ 18 июня 2011

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

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

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

0 голосов
/ 28 июля 2010

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

f = urllib.urlopen(xmlpath)
html = f.read()
xmldoc = minidom.parse(html)
...