试图解析用python编写的RSS阅读器的提要

试图解析用python编写的RSS阅读器的提要,python,eclipse,Python,Eclipse,我还是一个python初学者。作为一个实践项目,我想编写自己的RSS阅读器。 我在这里找到了一个有用的教程:。我使用了该教程中提供的代码: #/usr/bin/env python 导入urllib2 从xml.dom导入minidom,节点 “”“获取XML”“” url\u info=urllib2.urlopen('http://rss.slashdot.org/Slashdot/slashdot') 如果(url\u信息): “”“我们有RSS XML,让我们尝试解析它”“” xmldo

我还是一个python初学者。作为一个实践项目,我想编写自己的RSS阅读器。 我在这里找到了一个有用的教程:。我使用了该教程中提供的代码:

#/usr/bin/env python
导入urllib2
从xml.dom导入minidom,节点
“”“获取XML”“”
url\u info=urllib2.urlopen('http://rss.slashdot.org/Slashdot/slashdot')
如果(url\u信息):
“”“我们有RSS XML,让我们尝试解析它”“”
xmldoc=minidom.parse(url\u信息)
如果(xmldoc):
“”“我们有文档,得到根节点”“”
rootNode=xmldoc.documentElement
“”“迭代子节点”“”
对于rootNode.childNodes中的节点:
“”“我们只关心“项目”条目”“”
如果(node.nodeName==“项”):
“”“现在遍历的所有子项”“”
对于node.childNodes中的项_节点:
如果(item_node.nodeName==“title”):
“”“通过标题文本节点循环以获取
实际标题为“”
title=“”
对于项目\u node.childNodes中的文本\u节点:
如果(text\u node.nodeType==node.text\u node):
title+=text_node.nodeValue
“”“如果有标题,现在打印标题”“”
如果(len(标题)>0):
印刷品标题
如果(item_node.nodeName==“description”):
“”“通过描述文本节点循环以获取
实际描述为“”
description=“”
对于项目\u node.childNodes中的文本\u节点:
如果(text\u node.nodeType==node.text\u node):
description+=text_node.nodeValue
“”“现在打印标题(如果有)。
添加带有\n的空白,使其看起来更好“”
如果(长度(描述)>0):
打印说明+“\n”
其他:
打印“获取XML文档时出错!”
其他:
打印“错误!获取URL”

一切按预期进行,首先我想我理解了一切。但只要我使用另一个RSS源(例如。“http://www.spiegel.de/schlagzeilen/tops/index.rss“我被“终止”我的应用程序在Eclipse IDE中出错。无法详细说明该错误消息,因为我无法确定应用程序终止的确切位置和原因。调试器没有多大帮助,因为它忽略了我的断点。这是另一个问题


有人知道我做错了什么吗?

如果什么都没有发生,可能代码中的所有内容都是正确的,只是没有匹配正确的元素:)

如果出现异常,请尝试从命令行启动:

python <yourfilename.py>

如果什么也没发生,可能代码中的所有内容都是正确的,只是不匹配正确的元素:)

如果出现异常,请尝试从命令行启动:

python <yourfilename.py>
“terminated”消息并不是一个错误,它只是为了获取python已无误退出的信息

你没有做错什么,只是这个RSS阅读器不是很灵活,因为它只知道RSS的一个变体

如果比较slashdot和Spiegel Online的XML文档,您会发现文档结构上的差异:

Slashdot:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ...>
  <channel rdf:about="http://slashdot.org/">
    <title>Slashdot</title>
    <!-- more stuff (but no <item>-tags) -->
  </channel>
  <item rdf:about="blabla">
    <title>The Condescending UI</title>
    <!-- item data -->
  </item>
  <!-- more <item>-tags -->
</rdf:RDF>
为此:

for node in rootNode.getElementsByTagName('item'):
因此,所有的
-标记都会被枚举,而不管它们在XML文档中的什么位置。

那么,“终止”消息并不是一个错误,它只是为了提供python已无误退出的信息

你没有做错什么,只是这个RSS阅读器不是很灵活,因为它只知道RSS的一个变体

如果比较slashdot和Spiegel Online的XML文档,您会发现文档结构上的差异:

Slashdot:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ...>
  <channel rdf:about="http://slashdot.org/">
    <title>Slashdot</title>
    <!-- more stuff (but no <item>-tags) -->
  </channel>
  <item rdf:about="blabla">
    <title>The Condescending UI</title>
    <!-- item data -->
  </item>
  <!-- more <item>-tags -->
</rdf:RDF>
为此:

for node in rootNode.getElementsByTagName('item'):

这样,所有的
-标记都会被枚举,而不管它们在XML文档中的什么位置。

您能否尝试进行二进制搜索(通过注释代码)来隔离问题?我已经尝试过了。我刚知道这不是编译器发出的错误消息,而是我的知识不足。你能试着做一个二进制搜索(通过注释代码)来隔离问题吗?我试过了。我刚知道这不是编译器发出的错误消息,而是我的知识不足。谢谢你的提示,现在它可以工作了。必须承认,我的xml知识还不到标准;)谢谢你的提示,现在可以了。必须承认,我的xml知识还不到标准;)