python下用selenium的webdriver包如何在執行完點擊下一頁后沒有獲得下一頁新打開頁面的html源代碼


問題描述:

新打開的頁面url不變,只是網頁內容變了,然后使用drive.page_source得到的都是第一頁的html代碼,並不是當前頁面的html代碼。

1.

 原因:webdriver仍默認在原頁面下獲取標簽等信息;

解決方法:采用切換頁面句柄的方式解決;

#獲取當前頁面句柄
normal_window = driver.current_window_handle
#獲取所有頁面句柄
all_Handles = driver.window_handles
#如果新的pay_window句柄不是當前句柄,用switch_to_window方法切換
for pay_window in all_Handles:
  if pay_window != normal_window:
    driver.switch_to_window(pay_window)

 

2.

 原因:缺少time.sleep(1),如果時間短了就無法正常獲取數據,所以檢查適當位置是否有停留

def get_info(num):
    driver.get(url)
    driver.implicitly_wait(10)  # 隱式等待n秒,解釋JavaScript是需要時間的,如果短了就無法正常獲取數據,如果長了浪費時間;implicitly_wait()給定時間智能等待
    driver.find_element_by_id('pageNum').clear()#清除輸入框
    driver.find_element_by_xpath('//*[@id="pageNum"]').send_keys(num)#輸入頁數
    driver.find_element_by_xpath('//*[@id="judgeFlag"]/a').click()#單擊確認框
    html = driver.page_source
    return html

 

解決方法:

 加time.sleep(1)   注意:如果sleep時間短的話也不行

def get_info(num):
    driver.get(url)
    driver.implicitly_wait(10)  # 隱式等待n秒,解釋JavaScript是需要時間的,如果短了就無法正常獲取數據,如果長了浪費時間;implicitly_wait()給定時間智能等待
    driver.find_element_by_id('pageNum').clear()#清除輸入框
    driver.find_element_by_xpath('//*[@id="pageNum"]').send_keys(num)#輸入頁數
    driver.find_element_by_xpath('//*[@id="judgeFlag"]/a').click()#單擊確認框
    time.sleep(1)#一定要停一下,否則加載不出來一直輸出第一頁
    html = driver.page_source
    return html

 


免責聲明!

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



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