WordPress 내보내기 파일을 구문 분석 할 때 feedparser (우수 라이브러리)을 사용하려고합니다. WordPress 버전 간의 불일치로 인해 큰 두통이 생깁니다.Python 피드 파서가 atom/WordPress 네임 스페이스를 사용하고 있지 않습니까?
WordPress 2.x에는 atom:link
태그가 XML 출력에 포함되어 있지 않습니다 (without_atom_tags.xml).
>>> feed = feedparser.parse("without_atom_tags.xml")
>>> print feed.entries[0].comment_status
u'open'
이
가이
atom:link
태그 (
with_atom_tags.xml를) 워드 프레스 3.x의에서 XML 포함되어 있습니까
, 당신은 네임 스페이스 요소를 앞에해야합니다 : 구문 분석 할 때, 네임 스페이스 요소는 접두사없이 사용할 수있는 흥미로운
>>> feed = feedparser.parse("with_atom_tags.xml")
>>> feed.entries[0].wp_comment_status # <-- Note wp_ prefix
u'open'
>>> feed.entries[0].comment_status
AttributeError: object has no attribute 'comment_status'
루트 RSS 요소 (with_atom_tags_and_namespace.xml)에 xmlns:atom="http://www.w3.org/2005/Atom"
을 추가하면 접두사가 필요하지 않습니다.
XML을 수정하지 않고 이러한 모든 형식을 구문 분석해야합니다. 피드 파서가 손상 되었습니까, 아니면 잘못 했습니까? 불쾌한 조건 코드없이이 작업을 수행 할 수 있습니까?
* 업데이트 : * 트렁크 버전의 feedparser를 사용하면 모든 요소가 동일하게 구문 분석됩니다 (*와 * wp_ 접두어). –