2010-07-28 49 views
0

我試圖從XML服務中獲取數據......這一個。使用urllib和minidom獲取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)) 

誰能幫助我?

回答

0

試試這個:

f = urllib.urlopen(xmlpath) 
html = f.read() 
xmldoc = minidom.parse(html) 
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) 
+0

適合我的應用程序託管在谷歌企業應用套件。 – 2010-07-28 10:38:29

0

我只是在做類似的事情,並遇到了你的問題。

在我的情況下,我認爲minidom.parse被破壞,因爲我得到語法錯誤。事實證明,語法錯誤是在我的xml文檔中,但跟蹤沒有做到這一點。

如果您使用minidom.parse或minidom.parseString發生語法錯誤,請務必檢查您的源文件。

1

parse()正在尋找一個文件,並且你給它一個字符串。還有一種名爲類parsestring()

嘗試:

from xml.dom.minidom import parseString 
import urllib2 
xml = urllib2.urlopen(xmlpath) 
dom = parseString(xml.read())