Чтение RSS-каналов: что делают агрегаторы, а я нет
Я добавляю следующий канал в Google Reader, и он обновляется нормально.
http://www.indeed.ca/rss?q=&l=Hamilton%2C+ON
Тем не менее, когда я использую любой из предложенных подходов в сети, которые просто предполагают чтение из этого источника и анализ XML, я получаю те же 20 элементов.
Что делает Google Reader, чтобы я был в своем коде, чтобы получать новые элементы?
Спасибо за совет. Кстати, я пишу код на Python.
2 ответа
Агрегаторы RSS "опрашивают" источники, т. Е. Периодически повторяют HTTP-запрос для каждого источника и проверяют, появляется ли что-нибудь новое в результатах. Это прискорбно, так как опрос всегда таков, так как тратит ресурсы на бесконечную серию "мы уже там?" вопросы (вроде как взять с собой малыша в долгую автомобильную поездку;-), и, тем не менее, подразумевает задержки (например, если вы будете опрашивать определенный источник каждый час, скажем, вы будете ждать до часа, чтобы увидеть некоторые результаты).
К сожалению, в самой архитектуре RSS нет альтернатив, нет способа запросить "обратный вызов" при появлении нового материала или выбрать более разумную "архитектуру публикации-подписки".
Хорошая попытка исправить это - pubsubhubbub, но это неизбежно требует сотрудничества (помимо стандартов RSS) с источниками и агрегаторами RSS - поэтому его нужно очень широко использовать, прежде чем его можно будет назвать "решением" проблемы, однако, технически это уже есть (для сотрудничающих сайтов;-).
Итак, возвращаясь к вашему вопросу, вы не делаете ничего плохого: вам просто нужно периодически опрашивать, как это делают агрегаторы RSS, чтобы в конечном итоге увидеть новые результаты.
1) Вы пробовали с другими RSS-лентами?
2) Если так, то это похоже на какой-то кеш... Вы за каким-то прокси?