爬蟲之Selenium 動態渲染頁面爬取


Selenim 是一個自動化測試工具,可以利用它驅動瀏覽器執行特定的動作,如點擊、下拉等操作,同時可以獲取瀏覽器當前呈現的頁面的源代碼,做到可見及可爬

1.使用流程

 1)聲明瀏覽器對象

    Selenium 支持非常多的瀏覽器,如Chrome、Firefox、Edge等,還有Android、BlackBerry等手機端瀏覽器。

 2)訪問頁面

    可以通過get()方法來請求網頁,參數傳入鏈接URL即可。

 3)查找節點

    Selenium 可以驅動瀏覽器完成各種操作,比如填充表單、模擬點擊等。

   

find_element_by_id                                
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      
如要獲取多個節點,element改為elements              
方法

 

 4)節點交互

Selenium可以驅動瀏覽器來執行一血操作,也就是說可以讓瀏覽器模擬執行一些動作。比較常見的用法有:輸入文字時用send_keys()方法,清空文字時用clear()方法,點擊按鈕時用click()方法

更多操作可見       http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement 

5)動作鏈

鼠標拖曳、鍵盤按鍵等

ActionChains  http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

6)執行JavaScript

調用execute_script()方法即可,傳入參數為js方法

7)獲取節點信息

獲取屬性     .get_attribute()

獲取文本值  .get_text()

獲取id、位置、標簽名和大小

.id  .location .tag_name  .size

8)切換Frame

switch_to.frame()

Selenium打開頁面后,默認在父級Frame中進行操作,如果頁面中存在子Frame,則不能獲取到子Frame中的節點

9)延時等待

隱式等待

  如果Sekenium沒有在DOM中找到節點,將繼續等待,超出設定時間后,則拋出找不到節點的異常。

  .implicitly_wait()

顯式等待

  指定要找到的節點,然后指定一個最長等待時間。如果在規定時間內加載出來了這個節點,就返回查找的節點;如果到了規定時間依然沒有加載出該節點,則拋出異常

  WebDriverWait().until(expected_conditions.presence_of_element_located(()))

10)Cookies

  使用Selenium,可以方便地對Cookies進行操作

  .get_cookies()   獲取cookie

  .add_cookie() 添加cookie

  .dele_all_cookies()  刪除所有cookie

 


免責聲明!

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



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