selenium模擬頁面向下滾動加載全部頁面


一些網站在訪問時不會一次加載所有元素,需要下拉至底部后等待刷新更多元素出來,利用selenium執行js代碼滾動頁面,每次重新獲取頁面高度,直到頁面高度不再變化。

js='return document.body.scrollHeight;'
height=0
while True: new_height = driver.execute_script(js) if new_height > height: driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') height = new_height time.sleep(5) else: print("滾動條已經處於頁面最下方!") driver.execute_script('window.scrollTo(0, 0)')#頁面滾動到頂部 break

這是通用的做法,對於具體的網站可以做一些針對性變化,比如,某網站頁面初始載入比較慢,利用某個元素判斷是否已加載完成

total=browser.find_element_by_id('total').text#判斷元素是否已加載
while total == '':
    time.sleep(1)
    total=browser.find_element_by_id('total').text

然后開始循環下拉載入所有元素,利用元素屬性判斷是否已加載,

當全部載入完畢后,頁面底部會有提示,利用這個元素判斷是否已載入完畢

is_done=browser.find_element_by_id('loading').text
while is_done == '':  
    browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')#一擼到底
    is_ready=browser.find_element_by_id('loading').get_attribute('class')
    while is_ready == 'tc mt-10':#判斷下拉頁面是否刷新
        time.sleep(1)
        is_ready=browser.find_element_by_id('loading').get_attribute('class')
        is_done=browser.find_element_by_id('loading').text#當頁面底部提示出現,表示已經加載全部元素
        if is_done != '':
            break

print("滾動條已經處於頁面最下方!")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM