【问题标题】:How to parse a large XML file in python? [closed]如何在 python 中解析一个大的 XML 文件? [关闭]
【发布时间】:2013-12-07 22:37:57
【问题描述】:

我使用的是 python 版本 2.7.*,我需要获取 youtube 播放列表。我是这样做的:

import urllib
from xml.dom import minidom

playlist_xml = str(urllib.urlopen('https://gdata.youtube.com/feeds/api/playlists/PLKwibIpsTqDyV6NgiJmO-x0yKfqWjApwp?v=2').read())
playlist = minidom.parse(playlist_xml)

问题是我无法解析结果……

Traceback (most recent call last):
  File "/Users/Python/parser.py", line 11, in <module>
    playlist = minidom.parse(playlist_xml)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/minidom.py", line 1914, in parse
    return expatbuilder.parse(file)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py", line 922, in parse
    fp = open(file, 'rb')
IOError: [Errno 63] File name too long: 

【问题讨论】:

  • 有一些方法可以将难以管理的长 XML 文档解析为 python 中的流,但这并不是一个特别大的文档。解析调用如何失败?你期待什么?
  • “我无法解析结果”不是对问题的描述性很强的陈述。您是否查看过要解析的 xml?它会引发错误吗?如果是这样,它是什么?我非常怀疑这与 XML 的大小有关。 Youtube 的 API 一次只允许返回 50 个结果(我认为),所以 xml 不应该那么大。

标签: python xml parsing python-2.7


【解决方案1】:

你应该使用parseString minidom 方法而不是parseparseString 解析 XML 并接受字符串,parse 接受 filename_or_file,但无法将 XML 内容视为文件名。

playlist = minidom.parseString(playlist_xml)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 2012-08-26
    • 2018-06-18
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多