當前位置: 妍妍網 > 碼農

據說這個庫比Selenium還要牛逼!

2024-02-29碼農

關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux Python 網路通訊、網路安全 等學習資料!

前言

大家好,這裏是 浩道Linux ,主要給大家分享 L inux P ython 網路通訊、網路安全等 相關的IT知識平台。

相信熟悉python的對於selenium庫都不會陌生,畢竟它在自動化測試領域套用還是十分廣泛的。今天介紹的這個python庫,據說比selenium庫還要牛逼,一起看看,或許你會發現它強大的地方!

DrissionPage 是一個基於 python 的網頁自動化工具。它既能控制瀏覽器,也能收發 封包,還能把兩者合而為一。 可兼顧瀏覽器自動化的便利性和 requests 的高效率。 它功能強大,內建無數人性化設計和便捷功能。 它的語法簡潔而優雅,程式碼量少,對新手友好。

背景

用 requests 做數據采集面對要登入的網站時,要分析封包、JS 源碼,構造復雜的請求,往往還要應付驗證碼、JS 混淆、簽名參數等反爬手段,門檻較高,開發效率不高。使用瀏覽器,可以很大程度上繞過這些坑,但瀏覽器執行效率不高。

因此,這個庫設計初衷,是將它們合而為一,同時實作「寫得快」和「跑得快」。能夠在不同需要時切換相應模式,並提供一種人性化的使用方法,提高開發和執行效率。除了合並兩者,本庫還以網頁為單位封裝了常用功能,提供非常簡便的操作和語句,使使用者可減少考慮細節,專註功能實作。以簡單的方式實作強大的功能,使程式碼更優雅。

以前的版本是對 selenium 進行重新封裝實作的。從 3.0 開始,作者另起爐竈,對底層進行了重新開發,擺脫對 selenium 的依賴,增強了功能,提升了執行效率。

核心能力

本庫采用全自研的內核,內建了 N 多實用功能,對常用功能作了整合和最佳化,對比 selenium,有以下優點:

  • 無 webdriver 特征

  • 無需為不同版本的瀏覽器下載不同的驅動

  • 執行速度更快

  • 可以跨 iframe 尋找元素,無需切入切出

  • 把 iframe 看作普通元素,獲取後可直接在其中尋找元素,邏輯更清晰

  • 可以同時操作瀏覽器中的多個分頁,即使分頁為非啟用狀態,無需切換

  • 可以直接讀取瀏覽器緩存來保存圖片,無需用 GUI 點選另存

  • 可以對整個網頁截圖,包括視口外的部份(90以上版本瀏覽器支持)

  • 可處理非open狀態的 shadow-root

  • 入門演示

    SessionPage物件和WebPage物件的 s 模式,可用收發封包的形式存取網頁。

    顧名思義,SessionPage是一個使用使用Session(requests 庫)物件的頁面,它使用 POM 模式封裝了網路連線和 html 解析功能,使收發封包也可以像操作頁面一樣便利。

    並且,由於加入了本庫獨創的尋找元素方法,使數據的采集便利性遠超 requests + beautifulsoup 等組合。

    SessionPage是本庫幾種頁面物件中最簡單的,我們先從它開始入手。

    我們看個簡單的例子,來了解SessionPage的工作方式。

    # 匯入
    from DrissionPage import SessionPage
    # 建立頁面物件
    page = SessionPage()
    # 存取網頁
    page.get('https://gitee.com/explore/all')
    # 在頁面中尋找元素
    items = page.eles('t:h3')
    # 遍歷元素
    for item in items[:-1]:
    # 獲取當前<h3>元素下的<a>元素
    lnk = item('tag:a')
    # 打印<a>元素文本和href內容
    print(lnk.text, lnk.link)

    輸入效果:

    對比被存取頁面 官網。

    簡直好 簡單啊! 更多詳情可存取作者主頁:
    https://g1879.gitee.io/drissionpagedocs/

    更多精彩

    關註公眾號 浩道Linux

    浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 網路安全 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。

    喜歡的話,記得 點「贊」 「在看」