日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一日一技:效率提高十倍,Puppeteer如何啟動(dòng)交互模式?

當(dāng)我們使用 Selenium 開發(fā)爬蟲的時(shí)候,使用 Jupyter 寫代碼會比用 PyCharm 寫代碼更方便。如果使用 PyCharm 寫代碼并直接運(yùn)行,當(dāng)某一行報(bào)錯(cuò)的時(shí)候,整個(gè)程序就掛了,改了代碼以后必須完全從頭開始,這樣會非常浪費(fèi)時(shí)間。但如果使用 Jupyter 寫代碼,那么我們只需要重試出問題的這一行代碼就可以了,不需要把整個(gè)程序再重啟一次。

成都創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元大荔做網(wǎng)站,已為上家服務(wù),為大荔各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

但如果我們使用 JavaScript 操作 Puppeteer,應(yīng)該怎么實(shí)現(xiàn)寫一行代碼,運(yùn)行一行代碼呢?

我們知道,Node.js 的命令行本身確實(shí)是可以實(shí)現(xiàn)寫一行代碼運(yùn)行一行的,如下圖所示:

但 Puppeteer 的代碼 跟上面的這段代碼有點(diǎn)不一樣,我們先來看看 Puppeteer 官方文檔里面,是怎么寫的代碼:

注意,其中有很長一段函數(shù)是使用async聲明的,它是異步函數(shù)。在 Node.js 的交互環(huán)境里面,必須把整段函數(shù)全部寫進(jìn)去,一次性運(yùn)行,不能一段一段運(yùn)行。如果嘗試一段一段運(yùn)行的話,代碼就會報(bào)錯(cuò),我們來看看:

這是因?yàn)?,await關(guān)鍵詞必須在一個(gè)異步函數(shù)里面使用。它不能單獨(dú)出現(xiàn)在最外層。這就要求我們把所有的代碼都寫到一個(gè)異步函數(shù)里面,然后運(yùn)行這個(gè)異步函數(shù)。

但這樣做,跟直接寫一個(gè).js 文件來運(yùn)行有什么區(qū)別?我每次想測試一個(gè) XPath 語句能否正常運(yùn)行,都要把整個(gè)代碼重新跑一邊。這不是白白浪費(fèi)了交互環(huán)境的優(yōu)勢嗎?

但實(shí)際上,Node.js 與 Chrome 本身就有一個(gè)很好用的交互環(huán)境,但很多人可能并不知道。

要啟動(dòng)這個(gè)交互模式,實(shí)際上非常簡單。我們從0開始來創(chuàng)建這個(gè)環(huán)境。

首先,我們創(chuàng)建一個(gè)文件夾test_puppeteer,然后使用 npm 或者yarn安裝puppeteer-core。使用puppeteer-core而不是puppeteer,是因?yàn)榍罢呖梢灾苯邮褂孟到y(tǒng)的 Chrome,而后者需要下載一個(gè)幾百 MB 的 Chromium,非常浪費(fèi)時(shí)間。

 
 
 
 
  1. mkdir test_puppeteer 
  2. cd test_puppeteer 
  3. yarn add puppeteer-core 

上面的命令執(zhí)行完成以后,我們就可以啟動(dòng)這個(gè)交互環(huán)境了。

執(zhí)行命令:

 
 
 
 
  1. node --inspect 

運(yùn)行效果如下圖所示:

現(xiàn)在,隨便開一個(gè) Chrome 的窗口,打開開發(fā)者工具,如下圖所示:

大家注意,在開發(fā)者工具菜單欄的左上角,圖中箭頭所指向的位置,出現(xiàn)了 Node.js 的綠色 Logo。我們點(diǎn)擊一下它。

此時(shí),會彈出一個(gè)單獨(dú)的開發(fā)者工具窗口,如下圖所示:

這個(gè)窗口會自動(dòng)關(guān)聯(lián)上我們剛才啟動(dòng)的 Node.js。

現(xiàn)在,我們試一試直接在這個(gè)開發(fā)者工具的 Console標(biāo)簽頁上面寫一些代碼:

可以看到,在Console標(biāo)簽頁打印出來的內(nèi)容,也會在終端窗口出現(xiàn)??雌饋?,不過是從黑色窗口寫代碼變成了在白色窗口寫代碼,這有什么好炫耀的?

現(xiàn)在,我們先來看看你電腦上的 Node.js 的版本是多少,如果小于14,那么就趕緊升級,讓他大于等于14。然后再次執(zhí)行剛剛我們的命令,如下圖所示。

接下來,跟剛才一樣的步驟,我們啟動(dòng)開發(fā)者工具,然后嘗試直接調(diào)用Puppeteer,不可思議的一幕出現(xiàn)了:

現(xiàn)在我們已經(jīng)可以直接使用await了!現(xiàn)在,在這個(gè) Console選項(xiàng)卡上面,我們就可以像在 Jupyter 里面寫 JavaScript 代碼了,寫一行,運(yùn)行一行,看看效果,再寫一行,再運(yùn)行一行。

我們嘗試在這里打開我的博客:

可以看到,我在代碼里面故意寫錯(cuò)了一部分,應(yīng)該用await browser.NewPage()但是我寫的是await browser.page,導(dǎo)致程序報(bào)錯(cuò)。但是沒關(guān)系。我下面重新改成正確的就可以了。整個(gè)過程不需要重啟瀏覽器。你運(yùn)行一行代碼,它執(zhí)行一行代碼,代碼錯(cuò)了,只需要改這一行重新執(zhí)行就可以了。這才叫做交互環(huán)境。

 本文轉(zhuǎn)載自微信公眾號「未聞Code」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系未聞Code公眾號。


分享名稱:一日一技:效率提高十倍,Puppeteer如何啟動(dòng)交互模式?
本文地址:http://www.dlmjj.cn/article/djepjcg.html