溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python?Playwright如何使用

發(fā)布時(shí)間:2022-10-17 09:27:39 來源:億速云 閱讀:134 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Python Playwright如何使用”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Python Playwright如何使用”文章能幫助大家解決問題。

實(shí)戰(zhàn)場(chǎng)景

模塊名稱為 playwright-python,微軟開源的,是針對(duì) Python 語言的純自動(dòng)化工具,可以通過 API 調(diào)用瀏覽器。

接下來將通過 3 篇博客為大家詳細(xì)介紹該 playwright-python,徹徹底底了解它。

正式開始前依舊是模塊安裝:

pip install playwright

該模塊安裝非???,但完整體驗(yàn)還需要安裝瀏覽器相關(guān)驅(qū)動(dòng),這個(gè)有點(diǎn)大,命令如下:

python -m playwright install

安裝時(shí)注意使用國內(nèi)源!

Python?Playwright如何使用

等待過程中,可以查閱輸出日志,核對(duì)安裝了哪些模塊:

  • Downloading FFMPEG:FFMPEG;

  • Downloading Firefox 104.0:火狐瀏覽器驅(qū)動(dòng);

  • Downloading Chromium :谷歌瀏覽器驅(qū)動(dòng);

  • Downloading Webkit 16.0 :Webkit 瀏覽器驅(qū)動(dòng)。

實(shí)戰(zhàn)操作

第一次實(shí)戰(zhàn)操作,先從不寫代碼開始,通過下述命令啟動(dòng)瀏覽器,然后【錄制】我們的操作過程。

python -m playwright codegen

運(yùn)行代碼之后,彈出默認(rèn)瀏覽器和一個(gè)代碼錄制展示框,具體如下所示:

Python?Playwright如何使用

下面就可以在左側(cè)的瀏覽器窗口中進(jìn)行操作,然后觀察右側(cè)自動(dòng)生成的代碼段。

在地址欄輸入 baidu.com 跳轉(zhuǎn)到百度首頁,然后輸入 航天員,點(diǎn)擊搜索按鈕,生成的代碼如下所示。

Python?Playwright如何使用

將生成的代碼復(fù)制到開發(fā)工具中,直接運(yùn)行就可以得到剛剛相同的操作。

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    # Open new page
    page = context.new_page()
    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")
    # Click input[name="wd"]
    page.locator("input[name=\"wd\"]").click()
    # Fill input[name="wd"]
    page.locator("input[name=\"wd\"]").fill("航天員")
    # Press Enter
    page.locator("input[name=\"wd\"]").press("Enter")
    page.wait_for_url(
        "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E8%88%AA%E5%A4%A9%E5%91%98&fenlei=256&rsv_pq=0xfde7decb0011bfe6&rsv_t=3a67vLT%2Buti4VKw0mDppSrydbnq6CGsyOVNNxN%2F39naR6lYvxacuqvbYKRs0&rqlang=en&rsv_enter=1&rsv_dl=tb&rsv_sug3=24&rsv_sug1=24&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=%25E8%2588%25AA%25E5%25A4%25A9%25E5%2591%2598&rsp=5&inputT=5824&rsv_sug4=6786&rsv_jmp=fail")
    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

接下來我們分析一下其生成的代碼含義。

from playwright.sync_api import Playwright, sync_playwright

playwright.sync_api 模塊導(dǎo)入 Playwrightsync_playwright,看到關(guān)鍵字 sync,可以猜測(cè)這是一個(gè)同步操作,那與之對(duì)應(yīng)的,也是未來我們要對(duì)比學(xué)習(xí)的,就是異步接口相關(guān)內(nèi)容,這里先埋下一個(gè)伏筆,下篇博客在進(jìn)行討論。

browser = playwright.chromium.launch(headless=False)

初始化一個(gè)谷歌瀏覽器對(duì)象,并且不是無頭瀏覽器,即在桌面打開瀏覽器窗口。launch() 方法包含很多參數(shù),常用的有以下內(nèi)容:

  • headless:是否為無頭瀏覽器,即是否顯示瀏覽器窗口,默認(rèn)為不顯示;

  • channel:瀏覽器版本,"chrome", "chrome-beta", "chrome-dev", "chrome-canary";

  • proxy:代理設(shè)置;

  • timeout:超時(shí)時(shí)間,默認(rèn) 30s。

context = browser.new_context()
page = context.new_page()

打開一個(gè)新瀏覽器,創(chuàng)建一個(gè)新頁面,其中 browser.new_context() 的參數(shù)都是與瀏覽器配置相關(guān)的內(nèi)容,實(shí)踐的時(shí)候需要特別設(shè)置的在這里設(shè)置,例如下述參數(shù):

  • user_agent:UA 代理;

  • viewport:頁面大小,比例,例 1024*768;

  • offline:離線模式加載。

page.goto("https://www.baidu.com/")
page.locator("input[name=\"wd\"]").click()
……
page.wait_for_url(……)
  • goto() :地址跳轉(zhuǎn),即瀏覽器跳轉(zhuǎn);

  • locator():定位元素;

  • wait_for_url():等待頁面加載完畢。

goto() 函數(shù)的重要參數(shù):

  • url:跳轉(zhuǎn)地址,必須包含協(xié)議,例如 http:// 或者 https://;

  • referer:請(qǐng)求頭中的 referer 參數(shù);

  • timeout:最大操作時(shí)間(毫秒),默認(rèn)為 30 秒;

  • wait_until:默認(rèn)操作成功時(shí),執(zhí)行的內(nèi)容,還有幾個(gè)事件,分別是 domcontentloaded,networkidle,commit

關(guān)于“Python Playwright如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI