python爬蟲知識點2-selenium的基礎知識點
在每天的生活中
總會遇到一些煩心的事
或者一些開心的事
當遇到煩心事的時候
希望能保持平靜的心態
冷靜的解決問題
遇到開心事的時候
同樣希望心態能夠平靜
不要被眼前的開心事沖昏頭腦
願每個人
都能在生活中
學會成長
今天探長和大家一起分享和探討有關selenium的相關話題,主要從selenium的使用場景、相關方法,以及實際操作等方面進行說明。
Part 1 -selenium使用場景
對於一般的網頁,使用python自帶的urllib庫,或者第三方的requests庫就可以實現網頁的請求,但現實中會出現結構負責的網頁,這時通過以上兩種請求庫就不能有效的實現網頁內容的獲取,因此我們需要使用selenium。
selenium主要有以下使用場景:
1. 簡化請求分析過程。selenium瀏覽器化的操作過程,有效簡化了請求分析過程,促使爬蟲程序更多的關注頁面解析和結果處理。
2. 實現JS渲染頁面內容的快速獲取。現實中的網頁有的是通過JS渲染的,例如某寶充滿了大量的JS,對於這種類型的網頁,如果使用urllib、requests庫,就需要分析JS從而得到想要的內容,而selenium可以實現所見即所得,即網頁上能看到的內容均可一步獲取。
3. 實現響應式的交互操作。網頁中經常會遇到需要執行某些操作才能載入某些網頁元素的情況,例如登陸訪問等,這時普通的請求方式模擬困難,而selenium可以快速的進行交互操作,從而實現頁面請求。
Part 2 - selenium操作方法
探長將從selenium的安裝開始,以數據的獲取為止,對selenium的操作方法進行全面的介紹,主要包括瀏覽器對象的聲明、頁面的驅動請求、元素節點的定位獲取、元素內容及屬性數據的獲取等。
Part 3 - selenium的實際操作
1. selenium安裝
1.1 selenium庫的安裝
pip install selenium
1.2 瀏覽器驅動的安裝
安裝完selenium後還不能正常使用,需要安裝瀏覽器的驅動;
不同的瀏覽器具有不同的驅動,常見的驅動有chromedriver、
firefoxdriver、edgedriver、safaridriver等,
這裡我們chromedirver為例,在網站上搜索chromedriver
下載相應版本的瀏覽器驅動(注意與chrome版本相匹配),
下載後進行解壓,同時把其目錄配置到環境變數中即可。
2. 瀏覽器對象聲明方法
fromseleniumimportwebdriver
browser1 = webdriver.Chrome()# 聲明Chrome瀏覽器對象
browser2 = webdriver.Firefox()# 聲明Firefox瀏覽器對象
browser3 = webdriver.Safari()# 聲明Safari瀏覽器對象
browser4 = webdriver.Edge()# 聲明edge瀏覽器對象
3. 頁面請求方法
3.1 一般請求方法
browser1.get("https://www.jd.com")
3.2 添加異常異常的請求方法
一般情況下,請求頁面時可能會出現TimeoutException異常,
因此需要增加try...except語句
fromselenium.common.exceptionsimportTimeoutException
try:
browser1.get("https://www.jd.com")
exceptTimeoutException:
browser1.get("https://www.jd.com")
4. 元素獲取、交互動作與等待
進入到網頁後,我們需要獲取相關元素,例如輸入框和確定按鈕,獲取元素後需要進行類似於瀏覽器中的操作,即在輸入框中輸入查找內容,並點擊確定進行搜索;
只有在頁面元素載入出來後才能進行後續交互操作,因此需要引入等待概念,顧名思義等待就是等待網頁的某一元素呈現可見、可點擊等狀態,然後才能進行相應的交互動作。常見的等待方法包括presence_of_element_located、element_to_be_clickable等;
載入出來後需要進行交互操作,輸入操作的方法為send_keys,確定操作的方法為click,清除輸入框中內容的方法為clear。
5. 異常處理方法
6. 內容及屬性的獲取
網站html獲取方法可以通過page_source方法進行獲取
html = browser1.page_source
獲取到內容之後就可以通過解析庫進行相關數據的獲取,
例如pyquery、beautifulsoup、re等
以上就是selenium庫基本安裝及使用方法的相關介紹,希望能幫助到你!探長後期會專門寫一篇關於selenium抓取網站數據並進行數據處理分析的相關案例,敬請期待!如有任何問題,歡迎大家與探長聯繫(昵稱黃象探長),或者進行留言互動!
TAG:Python數據小屋 |