2013-12-07 2 views
2

저는 파이썬 버전 2.7을 사용하고 있습니다. * 나는 유튜브 재생 목록을 가져와야합니다. 나는 이런 식으로 작업을 수행합니다파이썬에서 큰 XML 파일을 구문 분석하는 방법은 무엇입니까?

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: 
+0

관리하기 어려운 긴 XML 문서를 파이썬에서 스트림으로 구문 분석하는 방법이 있지만 특히 큰 문서는 아닙니다. 구문 분석 호출은 어떻게 실패합니까? 너는 무엇을 기대 했는가? –

+1

"결과를 구문 분석 할 수 없습니다"는 문제에 대한 설명이 아닙니다. 구문 분석하려고하는 xml을 보셨습니까? 오류가 발생합니까? 그렇다면 무엇입니까? 나는 이것이 XML의 크기와 관련이 있다는 것을 의심 스럽다. Youtube의 API는 한 번에 50 개의 결과 만 반환 할 수 있기 때문에 xml이 그렇게 크지 않아야합니다. – mgilson

+0

: [Python은 cElementTree.iterparse를 사용하여 XML을 구문 분석하는 메모리가 부족합니다.] (http://stackoverflow.com/q/7697710/4279) – jfs

답변

2

당신은 parseString minidom의 방법 대신 parse을 사용해야합니다. parseString은 XML을 구문 분석하고 문자열을 허용하지만 parse은 filename_or_file을 허용하며 XML 내용을 파일 이름으로 처리하지 못합니다.

playlist = minidom.parseString(playlist_xml) 
관련 문제