我正在尝试通过 python 处理美味的 rss feed。这是一个示例:
...
<item rdf:about="http://weblist.me/">
<title>WebList - The Place To Find The Best List On The Web</title>
<dc:date>2009-12-24T17:46:14Z</dc:date>
<link>http://weblist.me/</link>
...
</item>
<item rdf:about="http://thumboo.com/">
<title>Thumboo! Free Website Thumbnails and PHP Script to Generate Web Screenshots</title>
<dc:date>2006-10-24T18:11:32Z</dc:date>
<link>http://thumboo.com/</link>
...
相关代码为:
def getText(nodelist):
rc = ""
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
return rc
dom = xml.dom.minidom.parse(file)
items = dom.getElementsByTagName("item")
for i in items:
title = i.getElementsByTagName("title")
print getText(title)
我认为这会打印出每个标题,但我基本上得到的是空白输出。我确信我做了一些愚蠢的错误,但不知道是什么?
最佳答案
您正在将 title
节点传递给 getText
,其 nodeType
不是 node.TEXT_NODE
。您必须在 getText
方法中循环遍历该节点的所有子节点:
def getTextSingle(node):
parts = [child.data for child in node.childNodes if child.nodeType == node.TEXT_NODE]
return u"".join(parts)
def getText(nodelist):
return u"".join(getTextSingle(node) for node in nodelist)
更好的是,在调用 getTextSingle
之前调用 node.normalize()
,这样可以确保将 node.TEXT_NODE
类型的连续子节点合并到一个单个node.TEXT_NODE
。
关于python - 通过 xml.dom.minidom 处理 RSS/RDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551214/