DrissionPage,即由driver 和session 組合而成的page。是個基於python 的Web 自動化操作整合工具。
它用POM 模式封裝了頁面和元素常用的方法,自帶一套簡潔直觀優雅的元素定位語法,實現了瀏覽器和requests 之間的無縫切換,可兼顧瀏覽器自動化的便利性和requests 的高效率,更棒的是,它的使用方式非常簡潔和人性化,代碼量少,對新手友好。
用requests 做資料擷取面對要登入的網站時,要分析資料包、JS 原始碼,建構複雜的請求,往往還要應付驗證碼、JS 混淆、簽章參數等反爬手段,門檻較高。若資料是由JS 計算產生的,還必須重現計算過程,體驗不好,開發效率不高。
使用瀏覽器,可以很大程度上繞過這些坑,但瀏覽器運作效率不高。因此,這個函式庫將它們合而為一,不同須要時切換對應模式,並提供一種人性化的使用方法,提高開發和運作效率。
除了合併兩者,本庫還以網頁為單位封裝了常用功能,提供非常簡便的操作和語句,在用於網頁自動化操作時,減少考慮細節,專注功能實現,使用更方便。
一切從簡,盡量提供簡單直接的使用方法,對新手更友善。
作者踩過無數坑,總結的經驗全寫到這個庫裡了。內建了N 多重實用功能,對常用功能進行了整合和最佳化。
特性
1.程式碼高度集成,以簡潔的程式碼為第一追求。
2.頁面物件可在瀏覽器和requests 間任意切換,保留登入狀態。
3.極簡單但強大的元素定位語法,支援鍊式操作,程式碼極為簡潔。
4.兩種模式提供一致的API,使用體驗一致。
5.人性化設計,整合眾多實用功能,大幅降低開發工作量。
1.每次運行程序可以重複使用已經開啟的瀏覽器。如手動設定網頁到某個狀態,再用程式接管,或手動處理登錄,再用程式爬內容。無須每次運行從頭啟動瀏覽器,超級方便。
2.使用ini 檔案保存常用配置,自動調用,也提供便利的設定API,遠離繁雜的配置項目。
3.極致簡明的定位語法,支援直接依文字定位元素,支援直接取得前後兄弟元素和父元素等。
4.強大的下載工具,操作瀏覽器時也能享受快速可靠的下載功能。
5.下載工具支援多種方式處理檔案名稱衝突、自動建立目標路徑、斷鍊重試等。
6.存取網址帶自動重試功能,可設定間隔和逾時時間。
7.訪問網頁能自動辨識編碼,無須手動設定。
8.連結參數預設自動產生Host和Referer屬性。
9.可隨時直接隱藏或顯示瀏覽器進程窗口,非headless 或最小化。
10.可自動下載合適的chromedriver,免去麻煩的設定。
11、d 模式查找元素內建等待,可任意設定全域等待時間或單次查找等待時間。
12.點擊元素整合js 點擊方式,一個參數即可切換點擊方式。
13.點擊支援失敗重試,可用於保證點擊成功、判讀網頁遮罩層是否消失等。
14.輸入文字能自動判斷是否成功並重試,避免在某些情況下輸入或清空失效的情況。
15、d 模式下支援全功能的xpath,可直接取得元素的某個屬性,selenium 原生無此功能。
16.支援直接取得shadow-root,和普通元素一樣操作其下的元素。
17.支持直接取得after和before偽元素的內容。
18.可以在元素下直接使用> 以css selector 方式取得目前元素直接子元素。原生不支援這種寫法。
19.可簡單地使用lxml 來解析d 模式的頁面或元素,爬取複雜頁面資料時速度大幅提升。
20.輸出的資料均已轉碼及處理基本排版,減少重複勞動。
21.可方便與selenium 或requests 原生程式碼對接,方便專案遷移。
22、使用POM 模式封裝,可直接用於測試,方便擴充。
23、d 模式配置可同時相容debugger_address和其它參數,原生不能相容。
24、還有很多這裡不一一列舉…………