基于Puppeteer實現(xiàn)地圖打印輸出

一 Puppeteer簡介

Puppeteer.js是谷歌官方推出的一個nodejs庫洁闰,它提供了一組用來操縱Chrome的API(默認headless也就是無UI的chrome甩恼,也可以配置為有UI),有點類似于PhantomJS厉碟,但Puppeteer是Chrome官方團隊進行維護的,前景更好搀继。使用Puppeteer吟策,相當于同時具有Linux和Chrome的能力,應用場景會非常多苟翻。就爬蟲領域來說韵卤,遠比一般的爬蟲工具功能更豐富,性能分析袜瞬、自動化測試也不在話下怜俐。官方列出的主要功能如下:

  • 利用網(wǎng)頁生成PDF、圖片
  • 爬取SPA應用邓尤,并生成預渲染內(nèi)容(即“SSR” 服務端渲染)'
  • 可以從網(wǎng)站抓取內(nèi)容
  • 自動化表單提交拍鲤、UI測試、鍵盤輸入等
  • 幫你創(chuàng)建一個最新的自動化測試環(huán)境(chrome)汞扎,可以直接在此運行測試用例
  • 捕獲站點的時間線季稳,以便追蹤你的網(wǎng)站,幫助分析網(wǎng)站性能問題
    安裝如下很簡單:
npm install puppeteer

二 輸出地圖圖片

在工程項目中澈魄,常常有導出地圖圖片保存的需求景鼠,這種需求很多時候,直接在前端canvas渲染圖片導出即可痹扇,參考:OpenLayers3關于Map Export的Canvas跨域铛漓,但很多時候,Map的Layer來源很多鲫构,有公網(wǎng)第三方網(wǎng)站的浓恶,有工程自己服務器的,并不是每個地圖服務器都支持cors操作结笨,canvas渲染常常無法使用包晰,而使用服務端請求出圖也是一種可選方案。

測試以本地的一個web頁面為準:

測試頁面.png

廢話不多說炕吸,直接上代碼:

const puppeteer = require('puppeteer');
(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    
    //登錄地圖網(wǎng)頁
    await page.goto('http://localhost:63342/%E7%89%B9%E6%95%88demo/Gansu.html');
        
    //根據(jù)頁面上下文伐憾,獲取map div的寬高  
    let result = await page.evaluate((divid) => {
        let mapdiv=document.querySelector(`#${divid}`);
        let width= parseInt(mapdiv.offsetWidth);
        let height=parseInt(mapdiv.offsetHeight);
        return Promise.resolve([width,height]);
    }, 'map');
    console.log(result); 
    
    //等待1.2秒
    await sleep(1200);
    //print png
    await page.screenshot({
        path: 'clickbd.png',
        //fullPage與clip使用時互斥
        //fullPage: true,  //整頁輸出
        //只clip出map div的范圍輸出地圖
        clip:{
            x:0,
            y:0,
            width:result[0],
            height:result[1]
        }
    });
    browser.close();
})();


function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

以上代碼保存為工程中,起名叫print.js赫模,然后執(zhí)行:

node print.js

等待之后树肃,輸出結(jié)果如下:

結(jié)果.png

本文只簡單介紹下Puppeteer,可以預見瀑罗,將來會越來越火胸嘴,畢竟是chrome官方維護的庫莉钙,比同類產(chǎn)品牌子更大。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筛谚,一起剝皮案震驚了整個濱河市磁玉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驾讲,老刑警劉巖蚊伞,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吮铭,居然都是意外死亡时迫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門谓晌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掠拳,“玉大人,你說我怎么就攤上這事纸肉∧缗罚” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵柏肪,是天一觀的道長姐刁。 經(jīng)常有香客問我,道長烦味,這世上最難降的妖魔是什么聂使? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮谬俄,結(jié)果婚禮上柏靶,老公的妹妹穿的比我還像新娘。我一直安慰自己溃论,他們只是感情好屎蜓,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蔬芥,像睡著了一般梆靖。 火紅的嫁衣襯著肌膚如雪控汉。 梳的紋絲不亂的頭發(fā)上笔诵,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音姑子,去河邊找鬼乎婿。 笑死,一個胖子當著我的面吹牛街佑,可吹牛的內(nèi)容都是我干的谢翎。 我是一名探鬼主播捍靠,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼森逮!你這毒婦竟也來了榨婆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤褒侧,失蹤者是張志新(化名)和其女友劉穎良风,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闷供,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡烟央,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了歪脏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疑俭。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖婿失,靈堂內(nèi)的尸體忽然破棺而出钞艇,到底是詐尸還是另有隱情,我是刑警寧澤豪硅,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布香璃,位于F島的核電站,受9級特大地震影響舟误,放射性物質(zhì)發(fā)生泄漏葡秒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一嵌溢、第九天 我趴在偏房一處隱蔽的房頂上張望眯牧。 院中可真熱鬧,春花似錦赖草、人聲如沸学少。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽版确。三九已至,卻和暖如春乎折,著一層夾襖步出監(jiān)牢的瞬間绒疗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工骂澄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吓蘑,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像磨镶,于是被迫代替她去往敵國和親溃蔫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,323評論 25 707
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,427評論 7 249
  • 鑒于今天是萬圣節(jié)痪伦,所以先祝大家萬圣節(jié)快樂嘍!其實從邊疆省份來到北京的我雹锣,對萬圣節(jié)的了解也只限于那些美國電影:一排排...
    白灼時閱讀 137評論 0 0
  • 今天是韻律的紅天行者网沾,今天在內(nèi)在應該會有很多的提升,最近特別喜歡行天行者蕊爵,昨天的星座上說我有行天行者的使命感辉哥,意識...
    youyous閱讀 537評論 0 0
  • 一夜之間,夏秋過渡攒射。 現(xiàn)在的天空高而遠醋旦,藍的透徹。云被風梳理的柔順體貼会放。明明樹葉還是綠的茂盛饲齐,卻已經(jīng)開始凋零。 這...
    strongheartcat閱讀 232評論 0 0