當前位置: 妍妍網 > 碼農

​DrissionPage,Python瀏覽器自動化又一神器~

2024-06-09碼農

來源 快學python

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)

    輸入效果:

    對比被存取頁面 官網。


    加入知識星球 【我們談論數據科學】

    提供100節專屬Pandas數據分析視訊教程

    600+ 小夥伴一起學習!