標籤:

selenium中如何模擬頁面滾動?

關於selenium中模擬頁面滾動在網上搜到的帖子幾乎都差不多,個人有兩個問題請教下大家:

1.#將頁面滾動條拖到底部

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(3)
這是拷貝的網上的第一種方法,但是此方法實際測試的結果就是說,如果是火狐瀏覽器,頁面可以滾到底部,但是如果是谷歌瀏覽器,就不會生效。請問,對於谷歌瀏覽器,應該如何通過這種模擬方法實現頁面滾動模擬呢?
2.#通過按鍵實現模擬(測試頁面為百度首頁)
driver.find_element_by_xpath("//*[@id=wrapper_wrapper]").send_keys(Keys.DOWN)
time.sleep(1)
對於這種方法,我的疑問是這個element是什麼?針對不同的網站網頁,我又該通過什麼element來send按鍵(pagedown)?是不是可以選擇網頁上任何一個element呢?
謝謝!


browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")

使用這行代碼能讓你的瀏覽器滾動條滾動到頁面的最底部,但是類似知乎這樣的網站,單單如此還無法載入下一頁的內容,這時你讓程序sleep一下,time.sleep(2),再執行上面這行代碼,就可以滾動到下一頁的底部*n


#coding=utf-8
from selenium import webdriver
import time
from selenium.webdriver import ActionChains
#以今日頭條首頁為例
##下拉載入更多實現思路
##利用將滑鼠移動到最後一個元素位置模擬下拉
driver=webdriver.PhantomJS()
driver.get("https://www.toutiao.com/")
driver.save_screenshot("d:\pp\liu1.png")#圖片是為了比較變化
ac=driver.find_element_by_xpath("//ul[@infinite-scroll-disabled]/li[last()]")
ActionChains(driver).move_to_element(ac).perform()#定位滑鼠到指定元素
time.sleep(2)#給載入內容預留2秒
driver.save_screenshot("d:\pp\liu2.png")

不知題主解決了沒有,我是在網上看到的方法,自己動手做了一遍,

另外想請問題主現在從事什麼工作?要是python相關的話可否請教一些問題


不知道為什麼我爬京東的頁面的時候,用題主的方法並沒有完成頁面滾動。使用這句js時完成了滾動,可能是窗口滾動"window.scrollBy(0,30000)",但爬下來的數據還是沒有變化,可能還是不對,繼續研究。。。


推薦閱讀:

如何學習 Python,面對那麼多的標準庫,應該如何?
爬蟲帶你逛知乎(下篇)
Python GUI教程(七):轉換qt設計師的ui代碼為Python代碼
我們是怎麼升級到Python3的
python 如何處理提取嵌套中括弧 [] 的內容?

TAG:Python | Selenium |