Ich habe ein Skript in Python geschrieben, um einige Namen von einer Webseite zu analysieren. Die Elemente, die auf dieser Webseite verfügbar sind, werden nicht alle gleichzeitig angezeigt, sondern es ist notwendig, nach unten zu blättern, um die Webseite einige weitere Elemente freigeben zu lassen, und wieder einige nach einem anderen Bildlauf usw., bis alle Elemente sichtbar sind. Das Problem ist, dass die Elemente nicht im Körper befinden, weshalb driver.execute_script("return document.body.scrollHeight;")
dieser Befehl nicht funktioniert (IMO). Es befindet sich im linken Bereich wie ein Schiebebehälter. Wie kann ich den Boden dieses Containers erreichen und die Namen dieser Webseite analysieren? Ich habe fast alle Codes außer dem Lazy-Load geschrieben. Ich füge ein Bild an, um Ihnen eine Idee zu geben, was ich damit zu tun haben wollte, indem ich es als verschiebbaren Container bezeichnete.Kann nicht alle Shop-Namen von einer Webseite sammeln
Der Link zu dieser Webseite: Link
Das, was ich bisher versucht:
from selenium import webdriver; import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("replace_the_above_link")
check_height = driver.execute_script("return document.body.scrollHeight;")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
height = driver.execute_script("return document.body.scrollHeight;")
if height == check_height:
break
check_height = height
for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".select_list h2 a"))):
print(item.text)
driver.quit()
Dies ist das Bild dieser Box, den Artikel enthält: Click Here
Derzeit meinen Schaber analysiert Elemente, die beim Laden der Seite sichtbar sind.
Dank Herr Andersson, für Ihre Intervention und das Skript. Plus eins dafür. Wie auch immer, wenn ich deinen Code ausführe, produziert er das selbe Ergebnis wie ich zuerst ohne Scrollen hatte. Sollte ich irgendwo innerhalb der while-Schleife eine hardcoded Verzögerung setzen? Nochmals vielen Dank für Ihre Antwort, Sir. – SIM
Hmm .. Das ist komisch ... Hast du es genau so benutzt, wie es in meiner Antwort steht oder einige Änderungen vorgenommen? – Andersson
Nein, Sir, keine Änderung wird gemacht. Ich wage es kaum. Ich habe es genau so ausgeführt wie es ist. – SIM