本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
以下文章來源于Python程式員
剛接觸Python的新手、小白,可以復制下面的鏈接去免費觀看Python的基礎入門教學視頻
https://v.douyu.com/author/y6AZ4jn9jwKW
在我們爬取網頁程序中,經常發現我們想要獲得的資料并不能簡單的通過決議HTML代碼獲取,這些資料是通過AJAX異步加載方式或經過JS渲染后才呈現在頁面上顯示出來,
selenuim是一種自動化測驗工具,它支持多種瀏覽器,而在爬蟲中,我們可以使用它來模擬瀏覽器瀏覽頁面,進而解決JavaScript渲染的問題,
1. 使用示例
2. 詳細介紹
2.1 宣告瀏覽器物件
即告訴程式,應該使用哪個瀏覽器進行操作
2.2 訪問頁面
2.3 查找元素
成功訪問網頁后,我們可能需要進行一些操作,比如找到搜索框然后輸入關鍵字再敲擊回車鍵,
因此,就需要在selenium中查找元素,
2.3.1 單個元素
selenium查找元素有兩種方法,
第一種,是指定使用哪種方法去查找元素,比如指定依照CSS選擇或者依照xpath去進行查找
下面是詳細的元素查找方法
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
第二種,是直接使用find_element(),傳入的第一個引數為需要使用的元素查找方法
2.3.2 多個元素
查找多個元素和查找單個元素的方法基本一致(只需要將查找單個元素的func里加一個s),
查找多個元素回傳的是一個list,
2.4 元素互動操作
元素互動是先獲取一個元素,然后對獲取的元素呼叫互動方法,
比如說在搜索框內輸入文字:
2.5 互動動作
互動動作是將動作附加到互動鏈中串行執行,需要使用到ActionChains,
2.6 執行JavaScript
比如拖拽下拉
2.7 獲取元素資訊
已經通過元素查找獲取到元素后,可能還需要獲取這個元素的屬性、文本
2.7.1 獲取屬性
2.8 Frame
如果定位到父frame,是無法查找到子frame的資訊的,因此需要切換到子frame再進行查找,同理,在子frame也無法查找到父frame的資訊
2.9 等待
請求網頁時,可能會存在AJAX異步加載的情況,而selenium只會加載主網頁,并不會考慮到AJAX的情況,因此,使用時需要等待一些時間,讓網頁加載完全后再進行操作,
2.9.1 隱式等待
使用隱式等待時,如果webdriver沒有找到指定的元素,將繼續等待,超出規定時間后,如果還是沒有找到指定元素則拋出找不到元素的例外,默認等待時間為0,
隱式等待是對整個頁面進行等待,
需要特別說明的是:隱性等待對整個driver的周期都起作用,所以只要設定一次即可,
2.9.2 顯式等待
顯示等待包含了等待條件和等待時間,
首先判定等待條件是否成立,如果成立,則直接回傳;如果條件不成立,則等待最長時間為等待時間,如果超過等待時間后仍然沒有滿足等待等待條件,則拋出例外,
顯式等待是對指定的元素進行等待,
2.10 瀏覽器的前進/后退
back實作回到前一頁面,forward實作前往下一頁面
2.11 對Cookies進行操作
2.12 選項卡管理
選項卡管理就是瀏覽器的標簽,有些時候我們需要在瀏覽器里增加一個新標簽頁或者洗掉一個標簽頁,就可以使用selenium來實作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228016.html
標籤:其他
上一篇:快速排序
