2009-03-31 6 views
4

Использование feedparser или другой библиотеки Python для загрузки и анализа RSS-каналов; как я могу надежно обнаруживать предметы new и modified?Как обнаружить измененные и новые элементы в ленте RSS?

До сих пор я видел новые элементы в фидах с датами публикации раньше, чем последний элемент. Также я видел, как читатели каналов отображали один и тот же элемент, опубликованный с немного другим контентом, как отдельные элементы. Я не внедряю приложение для чтения фидов, я просто хочу разумную стратегию для архивирования данных фида.

ответ

5

Это зависит от того, насколько вы доверяете источнику подачи. feedparser предоставляет атрибут .id для элементов фида - этот атрибут должен быть уникальным как для источников RSS, так и для ATOM. Например, см., Например, feedparser's ATOM docs. Хотя .id будет охватывать большинство случаев, вполне возможно, что источник может опубликовать несколько элементов с одним и тем же идентификатором. В этом случае у вас нет большого выбора, кроме как хэш содержимого элемента.

+0

Хэширование содержимого может быть осуществимо в моем случае. Достаточно ли item.title & item.content? – muhuk

+0

Возможно. Некоторые каналы, которые я использую, меняют название на идентичные элементы без изменения содержимого; в таких случаях мне может быть интересно только хеширование по содержанию. Это зависит от того, что вы считаете «фундаментальным» для каждого элемента. –

+0

В любом случае, решение было бы отслеживать все «старые» данные на принимающей стороне, верно? Либо я отслеживаю обработанные идентификаторы, либо значения хэша для записей, которые я уже обработал. Невозможно определить новую запись, не проверяя каждую запись в RSS-канале или доверяя меткам времени фида? –