Google阅读器存档Feed无效xml?

时间:2012-03-28 16:56:14

标签: python rss

我想从CNN的头条新闻RSS Feed中获取最新的10,000个条目。我正在使用以下python程序执行此操作,连接到Google的存档工具,如下所示:

import string
import urllib2
from xml.dom import minidom

feedAddr = "http://www.google.com/reader/atom/feed/http://rss.cnn.com/rss/cnn_topstories.rss?r=n&n=1000"

feedString = urllib2.build_opener().open(urllib2.Request(feedAddr)).read()
xml = minidom.parseString(feedString)
items = xml.getElementsByTagName("item")

for item in items:
   titleNode = item.childNodes[1]
   linkNode = item.childNodes[3]

   titleString = titleNode.firstChild.data
   linkString = linkNode.firstChild.data

   print titleString, linkString

我收到以下错误:

xml.parsers.expat.ExpatError: mismatched tag: line 1285, column 4

这是Google的归档工具或Feed生成器的问题吗?这是我的Python代码的问题吗?我正在从此页面获取Feed网址,如上所示拼接在CNN Feed网址中:

http://googlesystem.blogspot.com/2007/06/reconstruct-feeds-history-using-google.html

1 个答案:

答案 0 :(得分:3)

您是否真的检查了urllib返回的数据?你确定你得到了一个饲料而不是其他东西吗? Google阅读器需要身份验证,如果您尝试在未经身份验证的情况下加载该网址,则会返回HTML错误页面。试试这个:

feedString = urllib2.build_opener().open(urllib2.Request(feedAddr)).read()
open('feed.xml', 'w').write(feedString)

检查feed.xml文件。

此外,您可以直接从CNN抓取它,只需剥离“http://www.google.com/reader/atom/feed/”部分并使用:

http://rss.cnn.com/rss/cnn_topstories.rss?r=n&n=1000.  

这会返回有效的RSS Feed。