我正在尝试抓取这一(无限)页面(www.mydealz.de),但是我无法让我的网络驱动程序向下滚动页面。我正在使用Python(3.5),Selenium(3.6)和PhantomJS。我已经尝试了几种方法,但是webdriver不会滚动- 它只给我第一页。
第一种方法(常用的滚动方法):
last_height = driver.execute_script("return document.body.scrollHeight") while True: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(1) new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: break last_height = new_height
第二种方法(只需按下几次向下键并释放它,也尝试在两次按下之间等待):
ActionChains(driver).key_down(Keys.ARROW_DOWN).perform() ActionChains(driver).key_up(Keys.ARROW_DOWN).perform()
第三种方法(在“滚动列表”中找到最后一个元素,然后滚动到其视图以强制滚动):
posts = driver.find_elements_by_css_selector("div.threadGrid") driver.execute_script("arguments[0].scrollIntoView();", posts[-1])
到目前为止没有任何工作,有人知道是否还有其他方法或我在哪里出错了吗?
要滚动浏览网页直到the url is mydealz.de/?page=3您可以使用以下代码块:
the url is mydealz.de/?page=3
from selenium import webdriver driver = webdriver.PhantomJS(executable_path=r'C:\\Utility\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe') driver.set_window_size(1400,1000) driver.get("https://www.mydealz.de") while ("3" not in driver.current_url) : driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") print(driver.current_url) driver.quit()
控制台输出:
https://www.mydealz.de/?page=3