Reddit RSS -канал возвращает меньше элементов по запросу через HTTP?
-
19-09-2019 - |
Вопрос
Я пытаюсь прочитать данные из RSS -канала, который имеет 25 элементов. Когда я запрошу файл RSS через HTTP, он говорит, что есть только 20 пунктов.
function test($location)
{
$doc = new DomDocument();
$doc->load($location);
$items = $doc->getElementsByTagName('item');
return $items->length;
}
// Prints 20
echo test('http://www.reddit.com/r/programming/new/.rss?after=t3_');
// Prints 25
echo test('programming.xml');
Я также пробовал RSS -каналы из других подредедитов с тем же результатом.
Решение
Я вижу, в чем сейчас проблема ... если вы посетите подобный Reddit /r/программирование/ И перейдите на вкладку «Новые», чтобы увидеть новые представления, есть два варианта сортировки. Первый вариант-«Rising», который отображается только перспективные записи, альтернативный заказ сортировки «новый».
Поскольку я выбрал «новый» порядок сортировки в моем браузере, он сохранил печенье и использовался в качестве порядок сортировки по умолчанию. Тем не менее, доступ к странице через код все еще использовал порядок сортировки по умолчанию, который вернул переменную сумму результатов.
Я решил проблему, добавив строку запроса заказа сортировки к URL -адресу запроса: http://www.reddit.com/r/programming/new/.rss?sort=new
Другие советы
Если бы у него были проблемы с загрузкой корма, это, вероятно, выпустило бы какое -то предупреждение.
Прямо сейчас ваш пример кода для канала Reddit показывает, что он имеет 14 элементов. Количество элементов в этом канале не является постоянным. Таким образом, проблема в том, что ваша локальная копия отличается от той, что вы загружали из Reddit.