Канал Google Reader Archive недействителен в формате xml? - PullRequest
0 голосов
/ 28 марта 2012

Я хочу получить самые последние 10000 записей из RSS-ленты главных новостей CNN. Для этого я использую следующую программу на 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 или генератором каналов? Это проблема с моим кодом Python? Я получаю URL фида с этой страницы, добавляя URL фида CNN, как показано выше:

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

1 Ответ

3 голосов
/ 28 марта 2012

Вы действительно изучили данные, возвращаемые urllib?Вы уверены, что получаете корм, а не что-то еще?Google Reader требует аутентификации, и если вы попытаетесь загрузить этот URL без аутентификации, вы получите страницу с ошибкой 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 фид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...