So laden Sie alle Einträge in einem unendlichen Bildlauf auf einmal, um den HTML in Python zu analysieren

StackOverflow https://stackoverflow.com//questions/21006940

Frage

Ich versuche, Informationen von diese Seite zu extrahieren. Die Seite lädt 10 Elemente gleichzeitig, und ich muss blättern, um alle Einträge zu laden (insgesamt 100). Ich kann den HTML analysieren und die Informationen erhalten, die ich für die ersten 10 Einträge benötige, aber ich möchte alle Einträge vollständig laden, bevor Sie den HTML analysieren.

Ich verwende Python, Anfragen und Beautifulsup. Die Art und Weise, wie ich die Seite analysiere, wenn es mit den ersten 10 Einträgen lädt, ist wie folgt:

generasacodicetagpre.

Dies lädt jedoch nur die ersten 10 Einträge. Also habe ich auf die Seite angesehen und die Ajax-Anforderung erhielt, um die nachfolgenden Einträge zu laden, und ich bekomme eine Antwort, aber es ist in der funky JSON, und ich würde lieber den HTML-Parser verwenden, anstatt JSON zu analysieren. Hier ist der Code:

generasacodicetagpre.

Dies gibt mir die Daten, aber es ist in einer sehr langen und verwickelten JSON, ich würde viel lieber alle Daten auf der Seite laden und einfach den HTML analysieren. Darüber hinaus bietet der gerenderte HTML weitere Informationen als die JSON-Antwort (dh der Name des Autors anstelle von obskurer USERID usw.) Es gab eine ähnliche Frage Hier , aber keine relevanten Antworten. Idealerweise möchte ich den Postanruf und dann das HTML anfordern und analysieren und analysieren, aber ich konnte das nicht tun.

War es hilfreich?

Lösung

In diesem Fall können Sie nicht mit Anfragen und Beautifulsup als von der Seite, die Sie extrahieren möchten, den Rest der Einträge über JS, wenn Sie nach unten extrahieren möchten, nicht in der Lage sein.Sie können dies mit selenium , das einen echten Browser öffnet, und Sie können weitergebenPAGE-DOWN-Taste PRESS EVENTS programmgesteuert.Sehen Sie sich dieses Video an, um die Aktion anzuzeigen. http://www.youtube.com/watch?v=g54xyvmojos

http://www.tidbitsoprogramming.com/2014/02 / krabbeln-website-that-loads-content.html

unten ist das Skript, das alle 100 Posttitel mit Selen extrahiert.

generasacodicetagpre.

Ausgang:

generasacodicetagpre.

Andere Tipps

Sie können dies versuchen:

generasacodicetagpre.

Alternativ könnten Sie die Antwort versuchen, Andrew Che in dies zu tunFrage .Dies ist eine 3-jährige Frage, und die Seite ist nicht mehr da, aber wenn Sie etwas Ähnliches mit einer scrollierenden Ergebnisseite ausprobieren (z. B. durchsuchte ich nach 'Top'), erfahren Sie den Endpunkt, den Sie anrufen könnenDie verschiedenen Seiten in der Ergebnisliste, die in diesem Fall " https:// mittel) war.com / search / posts? q= top & Seite= 1 '.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top