DrissionPage:一款讓網頁自動化更簡單的 Python 庫

在網頁自動化領域,Selenium 和 Playwright 早已是開發者耳熟能詳的工具。但今天要給大家介紹一款更輕量、更易用的 Python 庫 ——DrissionPage。它以 "融合 selenium 和 requests 優勢" 為核心設計理念,既能像 requests 一樣高效處理靜態網頁,又能像 selenium 一樣操控動態頁面,讓網頁爬取和自動化測試變得前所未有的簡單。

一、DrissionPage 是什么?

DrissionPage 是由國內開發者開發的一款網頁自動化工具,它的核心特點是 **"一體化"**:將 "靜態請求" 與 "動態渲染" 兩種操作模式無縫結合,無需在 requests 和 selenium 之間切換,就能輕松應對各種網頁場景。

二、為什么選擇 DrissionPage?

相比傳統工具,DrissionPage 的優勢非常明顯:

  1. 極簡 API:告別 Selenium 繁瑣的初始化配置,一行代碼即可啟動瀏覽器或發送請求。
  2. 兼顧效率與交互:靜態頁面用 requests 模式快速爬取,動態頁面切換到瀏覽器模式處理,避免 "殺雞用牛刀"。
  3. 強大的元素定位:支持 CSS 選擇器、XPath、文本、屬性等多種定位方式,且語法更簡潔。
  4. 內置反反爬機制:自動處理部分反爬策略(如 User-Agent 隨機化、Cookie 持久化)。
  5. 完整的文檔支持:中文文檔詳盡,對國內開發者友好,入門門檻低。

三、快速上手:DrissionPage 基礎用法

1. 安裝庫

bash

pip install?DrissionPage

2. 靜態模式:爬取靜態網頁

適用于無需交互的靜態頁面(如新聞詳情頁、博客文章):

代碼:

from?DrissionPage import?SessionPage# 創建靜態頁面對象(基于requests)page =?SessionPage()# 發送請求page.get("https://www.baidu.com")# 獲取頁面標題print("頁面標題:",?page.title)# 獲取頁面源碼html =?page.html# 用CSS選擇器提取元素search_input =?page.ele("#kw")??# 定位百度搜索框print("搜索框默認值:",?search_input.attr("value"))

3. 動態模式:操控瀏覽器

適用于需要交互的動態頁面(如登錄、表單提交、JavaScript 渲染內容):

代碼:

from DrissionPage import ChromiumPage
# 創建瀏覽器頁面對象(默認啟動Chrome)
page = ChromiumPage()
# 打開網頁
page.get("https://www.baidu.com")
# 定位并輸入搜索關鍵詞
page.ele("#kw").input("DrissionPage")
# 點擊搜索按鈕
page.ele("#su").click()
# 等待頁面加載完成
page.wait.load_start()
# 提取搜索結果
results = page.eles(".result a") ?# 獲取所有結果鏈接
for i, result in enumerate(results[:5], 1):print(f"結果{i}:{result.text},鏈接:{result.attr('href')}")# 關閉瀏覽器
page.close()

4. 多開瀏覽器

使用ChromiumOptions對象的atuo_port()方法,可指定程序自動創建全新的瀏覽器,多個瀏覽器互不干擾。

代碼:

from DrissionPage import ChromiumPage
# 創建瀏覽器頁面對象(默認啟動Chrome)
page = ChromiumPage()
# 打開網頁
page.get("https://www.baidu.com")
# 定位并輸入搜索關鍵詞
page.ele("#kw").input("DrissionPage")
# 點擊搜索按鈕
page.ele("#su").click()
# 等待頁面加載完成
page.wait.load_start()
# 提取搜索結果
results = page.eles(".result a") ?# 獲取所有結果鏈接
for i, result in enumerate(results[:5], 1):print(f"結果{i}:{result.text},鏈接:{result.attr('href')}")# 關閉瀏覽器
page.close()

四、進階技巧:讓自動化更高效

1. 元素定位:多種方式靈活選擇

DrissionPage 的元素定位語法非常靈活,支持多種方式:

代碼:

# 1. CSS選擇器(推薦)page.ele("#username")??# ID選擇器page.ele(".password")??# 類選擇器page.ele("input[name='email']")??# 屬性選擇器# 2. XPathpage.ele("//div[@class='content']")# 3. 文本內容(精確匹配)page.ele("text=提交訂單")# 4. 部分文本匹配(模糊定位)page.ele("text:包含('登錄')")# 5. 標簽名page.ele("tag:select")

2. 處理 iframe 和彈窗

無需切換上下文,直接定位嵌套元素:

代碼:

# 定位iframe中的元素(自動切換到iframe上下文)iframe_ele =?page.ele("#iframe1").ele("#username")# 處理alert彈窗alert =?page.alert ?# 獲取彈窗對象print(alert.text)??# 打印彈窗內容alert.accept()??# 確認彈窗

3. 配置瀏覽器參數

自定義瀏覽器啟動參數(如無頭模式、代理):

代碼:

from?DrissionPage import?ChromiumOptions,?ChromiumPage# 創建配置對象co =?ChromiumOptions()co.set_headless(True)??# 無頭模式(不顯示瀏覽器窗口)co.set_proxy("http://127.0.0.1:8888")??# 設置代理co.add_argument("--disable-images")??# 禁用圖片加載# 應用配置啟動瀏覽器page =?ChromiumPage(co)

五、DrissionPage vs 其他工具

工具

優勢

劣勢

DrissionPage

靜態 / 動態無縫切換,API 簡潔,學習成本低

生態相對較小,復雜場景案例較少

Selenium

生態成熟,支持多瀏覽器

API 繁瑣,配置復雜,速度較慢

Playwright

跨瀏覽器支持好,異步性能強

語法較新,與 requests 配合需額外處理 Cookie

requests

速度快,輕量

無法處理 JavaScript 動態內容

官方文檔鏈接:https://www.drissionpage.cn/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89122.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89122.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

理解Grafana中`X-Scope-OrgID`的作用與配置

X-Scope-OrgID的作用 該HTTP Header用于標識Loki日志數據的所屬租戶(組織)。在多租戶模式下,Loki通過此Header隔離不同團隊或用戶的數據,確保查詢和存儲的獨立性。數據隔離: 租戶A的日志標記為X-Scope-OrgID: team-a&a…

【PycharmPyqt designer桌面程序設計】

在 main.py 中調用 Qt Designer 生成的 windows.py(假設它是 PySide2 版)。 只要把兩個文件放在同一目錄即可直接運行。 ──────────────────── 1?? windows.py(Qt Designer 生成,已轉碼) # -*-…

Unity Android Logcat插件 輸出日志中文亂碼解決

背景之前安卓真機調試看日志,一直用的是Android Studio自帶的adb命令進行看日志,不太方便,改用Unity自帶的安卓日志插件時,存在中文日志亂碼問題。插件安裝基于Unity6000.1.11版本:Window -> Package Management -&…

Halcon雙相機單標定板標定實現拼圖

1.Halcon圖像拼接算法在之前的文章里也寫過,主要是硬拼接和特征點拼接兩種方式,今天增加另一種拼接圖像的方式。應用場景是多個相機聯合一起拍大尺寸的物體,并且相機視野之間存在重疊區域。通過在同一個標定板上面標定,計算兩個相…

動物世界一語乾坤韻芳華 人工智能應用大學畢業論文 -仙界AI——仙盟創夢IDE

提示詞在一個奇幻的童話森林里,所有的動物都像人類一樣直立行走,穿著各種搞怪的衣服。 一只戴著超大眼鏡、穿著背帶褲的烏龜,正一本正經地站在一個蘑菇舞臺上,拿著一根樹枝當作麥克風,準備唱歌。它的眼鏡總是往下滑&am…

SpringBoot(原理篇)

大家好,這里是 盛碼筆記。 本篇我們來聊一聊 Spring Boot 的“魔法”是如何實現的。你可能已經用過 Spring Boot 快速搭建項目,但有沒有想過:為什么只需要引入幾個 starter,Spring Boot 就能自動配置好整個應用環境? …

數據結構:棧(區間問題)

碼蹄集OJ-小碼哥的棧 #include<bits/stdc.h> using namespace std; #define int long long const int N1e67; struct MOOE {int ll,rr; }; stack<MOOE>st; signed main( ) {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin>>n;while(n--){int opt…

Vue 中 data、watch、created 和 methods

以下是 Vue 中 data、watch、created 和 methods 的詳細解釋&#xff0c;結合常見使用場景和示例&#xff1a;1. data&#xff1a;響應式數據容器 作用&#xff1a;定義組件的響應式數據&#xff08;狀態&#xff09;&#xff0c;當數據變化時&#xff0c;視圖自動更新。特點&a…

精密模具冷卻孔內輪廓檢測方法探究 —— 激光頻率梳 3D 輪廓檢測

引言精密模具冷卻孔的內輪廓精度直接影響注塑成型效率與制品質量。冷卻孔具有深徑比大&#xff08;可達 25:1&#xff09;、結構復雜&#xff08;多為螺旋形或異形&#xff09;、表面質量要求高&#xff08;Ra≤0.2μm&#xff09;等特點&#xff0c;傳統檢測方法難以滿足其高精…

Vue單文件組件與腳手架工程化開發

一、Vue與VueComponent原型關系解析1. 原型鏈關系圖解在Vue中&#xff0c;組件實例(VueComponent)與Vue實例之間存在特殊的原型鏈關系&#xff1a;VueComponent.prototype.__proto__ Vue.prototype這種設計使得所有組件都能訪問Vue原型上定義的方法和屬性。2. 原理驗證示例// …

架構設計之計算高性能——單體服務器高性能

架構設計之計算高性能——單體服務器高性能 高性能是每個程序員共同的追求&#xff0c;無論是開發系統&#xff0c;還是僅僅只是寫一段腳本&#xff0c;都希望能夠達到高性能的效果&#xff0c;而高性能又是軟件系統設計中最復雜的一步。無論是開發千萬級并發的電商系統&#…

Unity燈光面板環境設置

在Unity中&#xff0c;環境設置&#xff08;Environment Lighting&#xff09; 是燈光面板&#xff08;Lighting Window&#xff09;的核心功能之一&#xff0c;用于控制場景的全局光照效果&#xff0c;包括天空盒、環境光、反射和霧效等。這些設置直接影響場景的整體氛圍和真實…

MySQL語句優化案例

1.案例in查詢條件很慢其中in中共115個select id,detail_id,request,response,utime,ctime from response_detaill where detaill_id in (26371986, 26372242, 26371984, 26371990, 26400150, 26371988, 26371994, 26371992,26371998, 26371996, 26371970, 26371968, 2637197…

能行為監測算法:低成本下的高效管理

AI監控智慧公司管理&#xff1a;降本增效的實踐與突破一、背景&#xff1a;經濟壓力下的管理轉型需求在經濟下行周期&#xff0c;企業面臨人力成本攀升、管理效率低下、安全風險頻發等多重挑戰。傳統監控依賴人工巡檢&#xff0c;存在響應滯后、誤判率高、數據孤島等問題&#…

當前(2024-07-14)視頻插幀(VFI)方向的 SOTA 基本被三篇頂會工作占據,按“精度-速度-感知質量”三條線總結如下,供你快速定位最新范式

當前&#xff08;2024-07-14&#xff09;視頻插幀&#xff08;VFI&#xff09;方向的 SOTA 基本被三篇頂會工作占據&#xff0c;按“精度-速度-感知質量”三條線總結如下&#xff0c;供你快速定位最新范式。感知質量最佳&#xff1a;CVPR 2024 ? PerVFI ? 關鍵詞&#xff1a;…

開源 python 應用 開發(七)數據可視化

最近有個項目需要做視覺自動化處理的工具&#xff0c;最后選用的軟件為python&#xff0c;剛好這個機會進行系統學習。短時間學習&#xff0c;需要快速開發&#xff0c;所以記錄要點步驟&#xff0c;防止忘記。 鏈接&#xff1a; 開源 python 應用 開發&#xff08;一&#xf…

基于深度學習的情感分析模型:從文本數據到模型部署

前言 情感分析&#xff08;Sentiment Analysis&#xff09;是自然語言處理&#xff08;NLP&#xff09;領域中的一個重要應用&#xff0c;它通過分析文本數據來判斷文本的情感傾向&#xff0c;例如正面、負面或中性。隨著社交媒體的興起&#xff0c;情感分析在市場調研、品牌管…

使用python 實現一個http server

下面是一個使用 Python 內置庫 http.server 的簡單 HTTP 服務器實現。不需要安裝任何第三方庫&#xff0c;非常適合做演示或開發測試用。 from http.server import HTTPServer, BaseHTTPRequestHandlerclass SimpleHTTPRequestHandler(BaseHTTPRequestHandler):def do_GET(self…

Redis技術筆記-主從復制、哨兵與持久化實戰指南

目錄 前言 一、Redis主從復制 &#xff08;一&#xff09;Redis主從復制介紹 &#xff08;二&#xff09;基本環境準備 &#xff08;三&#xff09;工作原理 &#xff08;四&#xff09;結構模式 &#xff08;五&#xff09;一主一從&#xff08;無密碼&#xff09; 配置…

sundog公司的SilverLining SDK庫實現3d動態云層和下雨、下雨、雨夾雪效果

OSG系列文章目錄 文章目錄OSG系列文章目錄前言一、3d動態云與下雨、下雪效果不能同時出現二、3d動態云與下雨、下雪效果不能同時出現的原因三、解決辦法&#xff1a;前言 先看下效果&#xff1a;下雨 效果&#xff1a;下雪 效果&#xff1a;雨夾雪 &#x1f324;? Sundo…