无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

puppeteer 使用體驗(yàn)

2023-05-04 21:46 作者:小老虎Tigger  | 我要投稿

puppeteer?其實(shí)已經(jīng)用過(guò)很多次了,記錄一下使用的一些體會(huì)。

首先它的功能和名稱非常匹配,puppeteer是一個(gè)Node.js的一個(gè)庫(kù),它可以使我們?cè)趎ode中使用js代碼來(lái)控制一個(gè)chromium瀏覽器。我們的一些手動(dòng)的操作基本都能通過(guò)puppeteer來(lái)實(shí)現(xiàn),所以puppeteer通常也被用來(lái)做自動(dòng)化測(cè)試。由于puppeteer是直接操作的瀏覽器,所以更容易實(shí)現(xiàn)一些爬蟲的功能(不會(huì)涉及cookie、跨域等問(wèn)題)。

puppeteer的API非常清晰?https://pptr.dev/api。

我們?nèi)绻枰L問(wèn)一個(gè)網(wǎng)站,通常需要以下的步驟來(lái)實(shí)現(xiàn),可以看到代碼層面和我們?nèi)粘5牟僮鬟壿嫹浅O嗨啤?/p>


我們?nèi)绻胍僮?、獲取網(wǎng)頁(yè)中的一些內(nèi)容,puppeteer的API設(shè)計(jì)也和dom的API非常相似。

如果想要操作dom節(jié)點(diǎn),我們可以使用$、$$方法,類似于document.querySelector、document.querySelectorAll。但是我們需要注意的是$、$$返回的并不是dom節(jié)點(diǎn),而是Promise<ElementHandle<NodeFor<Selector>>?|?null>。我們可以通過(guò)ElementHandle去執(zhí)行一些click、focus、type等操作。puppeteer.elementhandle

Page.$() method

Runs?document.querySelector?within the page. If no element matches the selector, the return value resolves to?null.

Page.$$() method

The method runs?document.querySelectorAll?within the page. If no elements match the selector, the return value resolves to?[].


如果我們需要獲取dom中的一些數(shù)據(jù),需要使用$eval、$$eval。

Page.$eval() method

This method runs?document.querySelector?within the page and passes the result as the first argument to the?pageFunction.

$eval函數(shù)的pageFunction相當(dāng)于是在chromium瀏覽器中運(yùn)行,然后將返回的結(jié)果提供給了我們的nodejs,不能直接將dom返回,因?yàn)閚odejs中執(zhí)行的代碼沒(méi)有辦法保持對(duì)chromium瀏覽器中對(duì)象的引用,如果想要訪問(wèn)chromium頁(yè)面中的對(duì)象、方法,都需要使用puppetter提供的API來(lái)操作。這種方式,有點(diǎn)類似于electron。


puppeteer還提供了非常多的功能,可以植入腳本,切換frame、截圖、轉(zhuǎn)換頁(yè)面保存為PDF等等。我們?cè)谑褂眠^(guò)程中,要簡(jiǎn)單理解puppetter的運(yùn)行流程,我們的nodejs代碼是運(yùn)行在node中,而我們使用的puppetter,則是將一些代碼通過(guò)puppetter運(yùn)行在了chromium瀏覽器中,這兩者是通過(guò)puppetter來(lái)橋接的。


puppeteer 使用體驗(yàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
莲花县| 台东县| 铜山县| 郁南县| 南汇区| 土默特左旗| 松原市| 佛学| 抚顺市| 江门市| 聂拉木县| 洛宁县| 浦县| 白朗县| 南华县| 南川市| 乾安县| 海安县| 富裕县| 洪洞县| 定州市| 湘潭县| 安远县| 成武县| 海安县| 通山县| 吴忠市| 海原县| 宁武县| 抚顺县| 镇坪县| 永泰县| 商河县| 卢氏县| 成武县| 突泉县| 玉田县| 兴文县| 繁峙县| 呼和浩特市| 桐梓县|