Python直接从网址解析xml

标签 python xml parsing urllib

嘿。我试图找到一种方法,但我找不到。我已经在 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/

相关文章:

python - 使用 Python 的 os.walk 函数和 ls 命令获得不同的结果

android - 如何在xml中剪辑圆圈

xml - 命名空间错误 : Namespace prefix bd on keyword is not defined

ruby - 使用不同的编码和库解析 CSV 文件

java - 来自 JSON 解析器的意外结果

python - Odoo:在 Thread 中调用 self.env 或其他模型

Python/Tkinter制作自定义窗口

python - 通过模式匹配从多个文件中提取行并将其写入Linux中的另一个文件

xml - SQL 2008 XML 存储

Perl - 从 arrayref 中删除不需要的元素