Чтение RSS-каналов: что делают агрегаторы, а я нет - PullRequest
0 голосов
/ 01 августа 2010

Я добавляю следующий канал в Google Reader, и он обновляется нормально.

http://www.indeed.ca/rss?q=&l=Hamilton%2C+ON

Однако, когда я использую какой-либо из предложенных подходов в сети, которые просто предполагают чтение из этого источника и парсинг XML, я получаю те же 20 элементов.

Что делает Google Reader, чтобы я был в своем коде, чтобы получать новые элементы?

Спасибо за ваш совет. Кстати, я пишу в Python.

Ответы [ 2 ]

3 голосов
/ 01 августа 2010

RSS-агрегаторы "опрос" источников, то есть они периодически повторяют HTTP-запрос для каждого источника и проверяют, появляется ли что-нибудь новое в результатах. Это прискорбно, так как опрос всегда таков, так как тратит ресурсы на бесконечную серию "мы уже там?" вопросы (вроде как взять с собой малыша в долгую автомобильную поездку ;-), и , тем не менее, подразумевают задержки (например, если вы будете опрашивать определенный источник каждый час, скажем, вы будете ждать до часа, чтобы увидеть некоторые результаты).

К сожалению, в самой архитектуре RSS нет альтернативы, нет способа запросить «обратный вызов» при появлении нового материала или выбрать более разумную «архитектуру публикации-подписки».

Хорошая попытка исправить это pubsubhubbub , но это неизбежно требует сотрудничества (помимо стандартов RSS) с источниками и агрегаторами RSS - поэтому для его вызова требуется очень широкое рассмотрение " решение проблемы, хотя, технически, оно уже есть (для сотрудничающих сайтов; -).

Итак, возвращаясь к вашему вопросу, вы не делаете ничего плохого: вам просто нужно периодически опрашивать, как это делают агрегаторы RSS, чтобы в конечном итоге увидеть новые результаты.

0 голосов
/ 02 августа 2010

1) Вы пробовали использовать другие RSS-каналы?

2) Если это так, то это похоже на какой-то кеш ... Вы за каким-то прокси?

...