Python直接从web地址解析xml

Python直接从web地址解析xml,python,xml,parsing,urllib,Python,Xml,Parsing,Urllib,嘿。我试着想办法,但我找不到。我已经在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=to

嘿。我试着想办法,但我找不到。我已经在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结尾,因此以后可能会出现问题。

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

toursurl= urllib2.urlopen(toursxml)
toursurl_string= toursurl.read()
parser.parseString( toursurl_string )
将整个文件读入一个名为toursurl_string的字符串

要解析字符串,请使用parseStringtoursurl_字符串方法

如果要将读取和解析结合起来,则必须传递要解析的流或文件名

toursurl= urllib2.urlopen(toursxml)
parser.parse(toursurl)
期望xyz是一个文件;你在找什么

parser.parseString(xyz)

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

首先,请尽量更精确:在适当的地方使用大写字母。另外,请非常非常仔细地阅读API文档。有没有一种方法可以从http流中进行解析,而不必在内存中使用巨大的字符串?
parser.parseString(xyz)