2015-08-29 2 views
0

Я пытаюсь разобрана каналы, как следующее:Использование feedparser получить потоковые данные

feed1 = 'http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson' 
feed2 = 'http://developer.usa.gov/1usagov' 

я могу использовать модуль feedparser разобрать первый канал, но не второй.

import feedparser 
feed1_read = feedparser.parse(feed1) # doesn't hang 
feed2_read = feedparser.parse(feed2) # hangs 

Есть ли что-то, что я не понимаю о том, как работают эти каналы? Почему feedparser зависает на втором канале, но не первый?

ответ

0

feedparser не может фактически разобрать либо этих каналов. Модуль feedparser предназначен для разбора Atom и RSS-каналов, которые являются форматами XML-документов, в то время как обе эти каналы возвращают документы JSON.

После вызова:

feed1_read = feedparser.parse(feed1) # doesn't hang 

Вы увидите, что feed1_read['feed'] пуст:

>>> feed1_read['feed'] 
{} 

А также:

>>> feed1_read['bozo_exception'] 
SAXParseException('Document is empty\n',) 

Возможно requests модуль будет более полезным.

+0

Отлично! Я просто делаю 'r = запросы.get (link1, stream = True)' – tom

 Смежные вопросы

  • Нет связанных вопросов^_^