App下載

DrissionPage:簡化Web自動化與數(shù)據(jù)抓取的強大工具

燭光里的愿 2024-02-23 11:42:07 瀏覽數(shù) (11307)
反饋

DrissionPage是一個基于Python的網(wǎng)頁自動化工具,集成了Selenium和Requests,提供了無縫切換和簡化的接口,使開發(fā)者在Web自動化和數(shù)據(jù)抓取任務(wù)中能夠高效、靈活地操作。無論是渲染JavaScript生成的動態(tài)內(nèi)容還是靜態(tài)頁面數(shù)據(jù)抓取,DrissionPage都能輕松勝任。本文將介紹DrissionPage的特點和安裝方法,并提供示例代碼,展示其在會話模式登錄和頁面數(shù)據(jù)抓取方面的應(yīng)用。

DrissionPage是什么?

DrissionPage是一個集成了Selenium和Requests的庫,類似 selenuium 的網(wǎng)頁自動化工具。這是一個基于 Python 的網(wǎng)頁自動化工具,支持 Chromium 內(nèi)核瀏覽器。它將控制瀏覽器和收發(fā)請求兩大功能合二為一,并提供了統(tǒng)一、簡潔的接口。無論是需要渲染JavaScript生成的動態(tài)內(nèi)容,還是簡單的靜態(tài)頁面數(shù)據(jù)抓取,DrissionPage都能輕松應(yīng)對。這個庫的設(shè)計哲學(xué)是提高開發(fā)者在Web自動化任務(wù)中的工作效率,同時降低編碼復(fù)雜度。

DrissionPage

特點

  • 無縫切換:DrissionPage 允許開發(fā)者在Selenium的瀏覽器驅(qū)動和Requests的會話之間無縫切換,這意味著您可以在需要渲染頁面時使用Selenium,而在需要高速數(shù)據(jù)抓取時使用Requests。
  • 簡化的接口:通過提供統(tǒng)一的接口,DrissionPage簡化了Web自動化和數(shù)據(jù)抓取的流程。開發(fā)者不需要分別學(xué)習(xí)和使用兩個庫的復(fù)雜API,從而節(jié)省了學(xué)習(xí)和開發(fā)時間。
  • 靈活高效:DrissionPage 設(shè)計考慮到了靈活性和效率,不僅支持動態(tài)內(nèi)容的抓取,還能處理大量的數(shù)據(jù)抓取任務(wù)。其性能優(yōu)化和易用性使其成為處理Web自動化和數(shù)據(jù)抓取任務(wù)的強大工具。

安裝方法

通過pip安裝DrissionPage,安裝命令如下:

pip install DrissionPage

示例代碼

  • 登錄會話模式:DrissionPage允許您在Driver模式下進行登錄,可以自行替換帳號密碼來進行登錄體驗:
    from DrissionPage import ChromiumPage
    
    # 創(chuàng)建頁面對象,并啟動或接管瀏覽器
    page = ChromiumPage()
    # 跳轉(zhuǎn)到登錄頁面
    page.get('https://gitee.com/login')
    
    # 定位到賬號文本框,獲取文本框元素
    ele = page.ele('#user_login')
    # 輸入對文本框輸入賬號
    ele.input('您的賬號')
    # 定位到密碼文本框并輸入密碼
    page.ele('#user_password').input('您的密碼')
    # 點擊登錄按鈕
    page.ele('@value=登 錄').click()
  • 抓取頁面數(shù)據(jù):在任何模式下,DrissionPage都提供了簡單的方法來抓取和處理頁面數(shù)據(jù):
    from DrissionPage import SessionPage
    
    # 創(chuàng)建頁面對象
    page = SessionPage()
    
    # 爬取3頁
    for i in range(1, 4):
        # 訪問某一頁的網(wǎng)頁
        page.get(f'https://gitee.com/explore/all?page={i}')
        # 獲取所有開源庫<a>元素列表
        links = page.eles('.title project-namespace-path')
        # 遍歷所有<a>元素
        for link in links:
            # 打印鏈接信息
            print(link.text, link.link)

這兩段代碼展示了如何使用DrissionPage進行會話模式的登錄和頁面數(shù)據(jù)的抓取。這種靈活性和簡化的接口讓它在Web自動化和數(shù)據(jù)抓取領(lǐng)域非常有用。

高級應(yīng)用

接下來,我們深入一項需要一定開發(fā)經(jīng)驗和難度的功能:使用Selenium模式進行復(fù)雜的交互操作。

# 首先,我們導(dǎo)入頁面對象WebPage類。
from DrissionPage import WebPage

# 接下來,我們創(chuàng)建一個WebPage對象。
page.get('https://gitee.com/explore')
# 然后控制瀏覽器訪問 gitee。
page('#q').input('DrissionPage')
page('t:button@tx():搜索').click()
page.wait.load_start()

# 抓取交互后的頁面數(shù)據(jù)
# 對ele元素進行模擬點擊,如判斷被遮擋也會點擊
ele.click()

# 用js方式點擊ele元素,無視遮罩層
ele.click(by_js=True)

# 如元素不被遮擋,用模擬點擊,否則用js點擊
ele.click(by_js=None)

通過這段代碼,您可以在Web模式下執(zhí)行復(fù)雜的頁面交互,如點擊按鈕、填寫表單等操作,并抓取交互后的頁面數(shù)據(jù)。

總結(jié)

DrissionPage是一款強大的網(wǎng)頁自動化工具,通過集成Selenium和Requests,它簡化了Web自動化和數(shù)據(jù)抓取的流程,并提供了統(tǒng)一、簡潔的接口。無論是處理動態(tài)內(nèi)容抓取還是簡單的頁面數(shù)據(jù)獲取,DrissionPage都表現(xiàn)出靈活性和高效性。通過示例代碼,我們展示了DrissionPage在會話模式登錄和頁面數(shù)據(jù)抓取方面的應(yīng)用,以及如何利用其在Web模式下執(zhí)行復(fù)雜的交互操作。對于開發(fā)者來說,DrissionPage是一個值得嘗試的工具,可以提高工作效率并降低編碼復(fù)雜度。


0 人點贊