Python直接从web地址解析xml

2024-06-26 13:49:46 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿。我试图找到一种方法,但我做不到,我用python建立了一个xml.sax解析器,当我读取本地文件(例如calendar.xml)时,它工作得很好,但我需要从web地址读取一个xml文件。

我想如果我这样做会管用的:

toursxml='http://api.songkick.com/api/3.0/artists/mbid:'+mbid+'/calendar.xml?apikey=---------'
toursurl=urllib2.urlopen(toursxml)
toursurl=toursurl.read()
parser.parse(toursurl)

但事实并非如此。我肯定有一个简单的方法,但我找不到。

所以是的,我可以很容易地转到url下载文件并通过

parser.parse("calendar.xml")

为了解决这个问题,我设置了读取文件并在本地创建文件,关闭文件,然后读取它。但正如你所能猜到的,它慢得要命。

有人可以直接读取xml吗?还要注意,url名称没有以“.xml”结尾,所以以后可能会出现问题


Tags: 文件方法apiwebparser解析器urlparse
2条回答
parser.parse(xyz)

希望xyz是一个文件;您正在查找

parser.parseString(xyz)

它期望xyz是一个包含XML的字符串。

首先,你的例子混淆了。请不要重复使用变量。

toursurl= urllib2.urlopen(toursxml)
toursurl_string= toursurl.read()
parser.parseString( toursurl_string )

将整个文件读入名为toursurl_string的字符串。

要解析字符串,可以使用parseString(toursurl_string)方法。

http://docs.python.org/library/xml.sax.html#xml.sax.parseString

如果你想结合阅读和解析,你必须传递“流”或文件名来解析。

toursurl= urllib2.urlopen(toursxml)
parser.parse(toursurl)

相关问题 更多 >