我想从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
答案 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。