Versuche, eine Webseite iterativ mit Python und Selen zu scrollen und zu scrappen
Ich habe kürzlich eine Frage gestellt (hier verwiesen:Python Web Scraping (Beautiful Soup, Selenium und PhantomJS): Nur ein Teil der gesamten Seite wird geschabt) das half, ein Problem zu identifizieren, das ich mit dem Abschaben des gesamten Inhalts einer Seite hatte, die dynamisch aktualisiert wird, wenn man einen Bildlauf durchführt. Es ist mir jedoch immer noch nicht möglich, meinen Code zu entwirren, um mit Selen auf das richtige Element zu verweisen und iterativ auf der Seite nach unten zu scrollen. Ich habe auch festgestellt, dass beim manuellen Blättern durch die betreffende Seite ein Teil des ursprünglichen Inhalts verschwindet, wenn die geladene Seite während der Aktualisierung des neuen Inhalts nicht mehr angezeigt wird. Schauen Sie sich zum Beispiel das Bild unten an ...
Ich habe den Container mit den Daten als Ziel ausgewählt, die ich zu entfernen versuche (blau hervorgehoben).
Zuerst habe ich Probleme, das richtige Element auszuwählen, um die Seite nach unten zu scrollen, da ich dies noch nie zuvor tun musste. Ich glaube, ich müsste Selen verwenden, um den Container anzuvisieren, und dann die Funktion "execute_script" verwenden, um die Seite nach unten zu scrollen, da diese Tabelle im Hauptteil der Webseite eingebettet ist. Allerdings kann ich das nicht zum Laufen bringen.
scroll = driver.find_element_by_class_name("ag-body-viewport")
driver.execute_script("arguments[0].scrollIntoView();", scroll)
Second, sobald ich die Fähigkeit zum Scrollen habe, muss ich ein wenig nach unten scrollen und iterativ kratzen. Was ich meine ist, dass, wenn Sie in das Bild schauen, Sie eine Reihe von "div" -Tags innerhalb des @ seh
Zum Beispiel ... wenn die Seite geladen wird und ich den HTML-Code an Beautifulsoup weitergebe. Ich kann die ersten 40 Reihen kratzen. Wenn ich nach unten scrolle, z. B. 40 Zeilen, übergebe ich die Zeilen 40 - 80 an beautifulsoup und die Zeilen 1 - 40 sind nicht mehr verfügbar, da die Daten dynamisch aktualisiert wurden ...
Long story short, ich möchte, dass ich in der Lage bin, den gesamten Inhalt des bereitgestellten Bildes zu kratzen, dann mit Selen ungefähr 40 Zeilen nach unten zu scrollen, die nächsten 40 zu kratzen, dann nach unten zu scrollen und die nächsten 40 zu kratzen und so weiter ... Tipps, wie Sie Selen zum Scrollen in diesem eingebetteten Container bringen und wie Sie iterativ nach unten scrollen, um alle Daten im Container zu erfassen, wenn dieser beim Scrollen dynamisch aktualisiert wird. Jede zusätzliche Hilfe wird sehr geschätzt.