Reddit RSS -Feed, der weniger Elemente zurückgibt, wenn sie über HTTP angefordert werden?
-
19-09-2019 - |
Frage
Ich versuche, Daten aus einem RSS -Feed mit 25 Elementen zu lesen. Wenn ich die RSS -Datei über HTTP anfordere, heißt es, dass es nur 20 Elemente gibt.
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');
Ich habe RSS -Feeds auch von anderen Subreddits mit demselben Ergebnis ausprobiert.
Lösung
Ich sehe, was das Problem jetzt ist ... wenn Sie einen Sub-Reddit-mögen, wie /r/Programmierung/ und gehen Sie auf die Registerkarte "Neue", um die neuesten Einsendungen zu sehen. Es gibt zwei Sortieroptionen. Die erste Option ist "steigend", die nur aufstrebende Einträge zeigt, die alternative Sortierreihenfolge ist "neu".
Da ich die "neue" Sortierreihenfolge in meinem Browser gewählt habe, hat es einen Keks gespeichert und danach als Standard -Sortierreihenfolge verwendet. Der Zugriff auf die Seite über Code verwendete jedoch weiterhin die Standard -Sortierreihenfolge, die eine variable Menge an Ergebnissen zurückgab.
Ich habe das Problem behoben, indem ich die Sortierabfrage -Abfrage -Zeichenfolge an die Anforderungs -URL angemeldet habe: http://www.reddit.com/r/programming/new/.rss?sort=new
Andere Tipps
Wenn es Probleme hatte, den Feed zu laden, würde es wahrscheinlich eine Art Warnung ausgeben.
Im Moment zeigt Ihr Beispielcode für den Reddit -Feed, dass er 14 Elemente enthält. Die Anzahl der Elemente in diesem Feed ist nicht konstant. Das Problem ist also, dass Ihre lokale Kopie anders ist als die, die Sie von Reddit geladen haben.