使用Python / PhantomJS / Selenium滚动无限页面

发布于 2021-01-29 15:02:28

我正在尝试抓取这一(无限)页面(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])

到目前为止没有任何工作,有人知道是否还有其他方法或我在哪里出错了吗?

关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    要滚动浏览网页直到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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看