嘿。我试图找到一种方法,但我找不到。我已经在 python 中设置了一个 xml.sax 解析器,当我读取本地文件(例如 calendar.xml)时它工作得很好,但我需要从网址读取 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)
但事实并非如此。我确信有一个简单的方法,但我找不到它。
所以是的,我可以轻松地访问该网址并下载文件并通过执行打开它
parser.parse("calendar.xml")
作为解决方法,我将其设置为读取文件并在本地创建文件,关闭文件,然后读取它。但你可以猜到它慢得要命。
有人可以直接读取xml吗?另请注意,网址名称不以“.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)
关于Python直接从网址解析xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345858/