小编典典

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

python

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

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


阅读 304

收藏
2021-01-20

共1个答案

小编典典

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