五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

nodejs爬蟲puppeteer框架設(shè)計(jì)思想與應(yīng)用

2022-03-03 15:45 作者:-千里馬-  | 我要投稿

先說明一下技術(shù)棧的應(yīng)用,使用typescript進(jìn)行編寫基于nodeJS環(huán)境的爬蟲,也就是說puppeteer建立在nodeJS中,而開發(fā)者進(jìn)行編寫typescript代碼,這樣比較優(yōu)美一點(diǎn)也有良好的封裝特性,然后typescript編譯為JavaScript運(yùn)行建立在node中的puppeteer框架。

下面來談一談puppeteer的處理邏輯和應(yīng)用思想,這是一個(gè)用戶操作為準(zhǔn)的框架,puppeteer干的事情就是模擬一個(gè)真實(shí)(虛假)的用戶去進(jìn)行瀏覽網(wǎng)頁(yè)。然后通過一個(gè)真實(shí)的瀏覽器在程序中去進(jìn)行控制dom文檔,包括獲取值參數(shù)等等后面再配合上mongoDB或者各種三方庫(kù)形成一套完整的模擬操作爬蟲系統(tǒng)。

其中puppeteer的設(shè)計(jì)思想是

Puppeteer 和Browser互動(dòng),browser代表瀏覽器,可以干瀏覽器可以干的所有事情,而Puppeteer

則是對(duì)瀏覽器進(jìn)行控制的系統(tǒng),讓我們可以對(duì)瀏覽器進(jìn)行控制,可能在實(shí)際應(yīng)用中不是特別重要,但是我后面遇到的bug就出在了Puppeteer當(dāng)中。

page則代表一個(gè)頁(yè)面,瀏覽器又可以創(chuàng)建一個(gè)頁(yè)面,page可以干網(wǎng)頁(yè)能夠做的任何事情。

如果對(duì)頁(yè)面進(jìn)行異步選擇器操作那么頁(yè)面則會(huì)返回一個(gè)異步ElementHandle,返回的這是一個(gè)dom的查詢提供了查詢信息,不過我們可以通常不使用這個(gè)方法。因?yàn)橛懈玫倪x擇那就是eval類函數(shù)返回dom信息,這樣更加切合網(wǎng)頁(yè)代碼流程操作。

這里也就是說page.$eval這個(gè)函數(shù),這里寫JavaScript代碼,直接返回我們需要的所有信息。

那什么時(shí)候用$查詢信息呢?

在瀏覽器代碼和我們自己的代碼高度重合難以分離的情況下使用,我們知道啊,JavaScript沒辦法被調(diào)試,所以程序在返回之前在瀏覽器中怎么運(yùn)行都是未知數(shù)。但是建議盡量不要把代碼都堆到eval中,雖然eval也可以傳我們創(chuàng)建的變量。

正確的做法是使用eval只進(jìn)行獲取dom值,返回dom值我們這邊我們進(jìn)行處理業(yè)務(wù)邏輯,否則代碼會(huì)變的難以維護(hù)。

查詢的是可以嵌套的,嵌套的查詢可能會(huì)返回JSHandle類型,這代表的是一個(gè)style屬性,可以對(duì)style屬性進(jìn)行操作。

這就是puppeteer大體的設(shè)計(jì)思想了,可以完全勝任爬蟲任務(wù)。

其中還有幾個(gè)類也一并介紹吧:

這個(gè)框架是一個(gè)非常模擬正常用戶操作的爬蟲框架,所以幾乎一半的api都是關(guān)于模擬操作的

Keyboard 關(guān)于鍵盤操作的類

Mouse 關(guān)于鼠標(biāo)操作的類

Frame 關(guān)于框架操作的類,這個(gè)可能你會(huì)不理解什么是框架,給一個(gè)提示<iframe>嵌入頁(yè)面,這是一個(gè)關(guān)于框架管理的類

request 這是一個(gè)page頁(yè)面中如果有網(wǎng)頁(yè)請(qǐng)求那么就可以被這個(gè)類捕獲到,然后我們就可以進(jìn)行業(yè)務(wù)邏輯。

target 一些基礎(chǔ)信息獲取

nodejs爬蟲puppeteer框架設(shè)計(jì)思想與應(yīng)用的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
广西| 长葛市| 永新县| 光山县| 沂南县| 镇平县| 任丘市| 湖南省| 平和县| 百色市| 卢氏县| 金平| 威信县| 牟定县| 宝清县| 洛宁县| 方山县| 庆城县| 冷水江市| 兰溪市| 井冈山市| 云霄县| 炎陵县| 镶黄旗| 富顺县| 万盛区| 木兰县| 新巴尔虎左旗| 镇坪县| 永丰县| 永顺县| 钦州市| 东丽区| 梁山县| 芒康县| 敦化市| 嘉义市| 江都市| 伊宁县| 崇仁县| 峨边|