2010-07-28 61 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())