Pergunta

Estou tentando ler dados de um feed RSS que possui 25 itens. Quando solicito o arquivo RSS através do HTTP, diz que existem apenas 20 itens.

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');

Eu tentei feeds RSS de outros subreddits também com o mesmo resultado.

Foi útil?

Solução

Eu vejo qual é a questão agora ... se você visitar um sub-reddit como /r/programação/ E vá para a guia "Nova" para ver envios mais recentes, existem duas opções de classificação. A primeira opção é "Rising", que mostra apenas entradas futuras, a ordem de classificação alternativa é "nova".

Como escolhi a ordem de classificação "nova" no meu navegador, ele salvou um cookie e foi usado como a ordem de classificação padrão depois. No entanto, o acesso à página através do código ainda estava usando a ordem de classificação padrão, que retornou uma quantidade variável de resultados.

Resolvi o problema anexando a string de consulta de ordem de classificação ao URL da solicitação: http://www.reddit.com/r/programming/new/.rss?sort=new

Outras dicas

Se estivesse tendo problemas para carregar o feed, provavelmente emitiria um aviso de algum tipo.

No momento, seu código de amostra para o feed do Reddit mostra que ele possui 14 itens. O número de itens nesse feed não é constante. Portanto, o problema é que sua cópia local é diferente da que você estava carregando do Reddit.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top