gpt4 book ai didi

python - 通过 xml.dom.minidom 处理 RSS/RDF

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:51 26 4
gpt4 key购买 nike

我正在尝试通过 python 处理美味的 rss 提要。这是一个示例:

...
<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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com