成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Puppeteer初探--爬取并生成《ES6標(biāo)準(zhǔn)入門》PDF

JerryWangSAP / 1568人閱讀

摘要:首先介紹是一個庫,他提供了一組用來操縱的默認(rèn)也就是無的,也可以配置為有有點類似于,但是官方團(tuán)隊進(jìn)行維護(hù)的,前景更好。使用,相當(dāng)于同時具有和的能力,應(yīng)用場景會非常多。

首先介紹Puppeteer

Puppeteer是一個node庫,他提供了一組用來操縱Chrome的API(默認(rèn)headless也就是無UI的chrome,也可以配置為有UI)

有點類似于PhantomJS,但Puppeteer是Chrome官方團(tuán)隊進(jìn)行維護(hù)的,前景更好。

使用Puppeteer,相當(dāng)于同時具有Linux和Chrome的能力,應(yīng)用場景會非常多。就爬蟲領(lǐng)域來說,遠(yuǎn)比一般的爬蟲工具功能更豐富,性能分析、自動化測試也不在話下,今天先探討爬蟲相關(guān)

Puppeteer官方文檔請猛戳這里

Puppeteer 核心功能

利用網(wǎng)頁生成PDF、圖片

爬取SPA應(yīng)用,并生成預(yù)渲染內(nèi)容(即“SSR” 服務(wù)端渲染)

可以從網(wǎng)站抓取內(nèi)容

自動化表單提交、UI測試、鍵盤輸入等

幫你創(chuàng)建一個最新的自動化測試環(huán)境(chrome),可以直接在此運行測試用例

捕獲站點的時間線,以便追蹤你的網(wǎng)站,幫助分析網(wǎng)站性能問題

OK,基本熟悉之后,接下來進(jìn)行爬蟲教學(xué):

使用puppeteer.launch()運行puppeteer,他會return一個promise,使用then方法獲取browser實例,Browser API猛擊這里

拿到browser實例后,通過browser.newPage()方法,可以得到一個page實例, 猛戳 Page API

使用page.goto()方法,跳轉(zhuǎn)至ES6標(biāo)準(zhǔn)入門

page.evaluate()方法中注冊回調(diào)函數(shù),并分析dom結(jié)構(gòu),從下圖可以進(jìn)行詳細(xì)分析,并通過document.querySelectorAll("ol li a")拿到文章的所有鏈接

拿到所有鏈接之后,依次爬取各個頁面(也可以promise all同時抓取多個頁面),使用page.pdf()方法打印當(dāng)前頁面

核心代碼如下

puppeteer.launch().then(async browser => {
    let page = await browser.newPage();

    await page.goto("http://es6.ruanyifeng.com/#README");
    await timeout(2000);

    let aTags = await page.evaluate(() => {
      let as = [...document.querySelectorAll("ol li a")];
      return as.map((a) =>{
          return {
            href: a.href.trim(),
            name: a.text
          }
      });
    });

    await page.pdf({path: `./es6-pdf/${aTags[0].name}.pdf`});
    page.close()

    // 這里也可以使用promise all,但cpu可能吃緊,謹(jǐn)慎操作
    for (var i = 1; i < aTags.length; i++) {
      page = await browser.newPage()
      var a = aTags[i];
      await page.goto(a.href);
      await timeout(2000);
      await page.pdf({path: `./es6-pdf/${a.name}.pdf`});
      page.close();
    }

    browser.close();
});

完整代碼訪問 Github

https://github.com/zhentaoo/p...

效果如下,這里簡述幾個需要注意的問題:

如果在page go之后馬上進(jìn)行pdf抓取,此時頁面還未完成渲染,只能抓到loading圖(如下),所以用timeout做了簡單點處理

最終爬取效果如下,PDF的尺寸、預(yù)覽效果、首頁重復(fù)就不做過多整理, 預(yù)覽效果如下,如果想要自己處理,可以設(shè)置一下chrome尺寸,打印頁數(shù)

最后聲明,生成的PDF很粗糙,應(yīng)該不會對阮老師產(chǎn)生什么影響,如有問題可以第一時間聯(lián)系我....

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/87335.html

相關(guān)文章

  • Puppeteer 初探

    摘要:抓取并生成預(yù)先呈現(xiàn)的內(nèi)容即。自動表單提交,測試,鍵盤輸入等。創(chuàng)建一個最新的自動化測試環(huán)境。使用最新的的和瀏覽器功能,直接在最新版本的瀏覽器中運行測試。捕獲您網(wǎng)站的時間線跟蹤,以幫助診斷性能問題。 木偶 Puppeteer 更友好的 Headless Chrome Node API木偶也是有心的 (=?ω?=) showImg(https://segmentfault.com/img/b...

    oysun 評論0 收藏0
  • 使用Node.js爬取任意網(wǎng)頁資源并輸出高質(zhì)量PDF文件到本地~

    摘要:上面只爬取了京東首頁的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁中的所有標(biāo)簽對應(yīng)的跳轉(zhuǎn)網(wǎng)頁中的所有的文字內(nèi)容,最后放到一個數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁資源,開箱即用的配置 將爬取到的...

    seasonley 評論0 收藏0
  • 使用Node.js爬取任意網(wǎng)頁資源并輸出高質(zhì)量PDF文件到本地~

    摘要:上面只爬取了京東首頁的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁中的所有標(biāo)簽對應(yīng)的跳轉(zhuǎn)網(wǎng)頁中的所有的文字內(nèi)容,最后放到一個數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁資源,開箱即用的配置 將爬取到的...

    xiaoxiaozi 評論0 收藏0
  • 使用Node.js爬取任意網(wǎng)頁資源并輸出高質(zhì)量PDF文件到本地~

    摘要:上面只爬取了京東首頁的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁中的所有標(biāo)簽對應(yīng)的跳轉(zhuǎn)網(wǎng)頁中的所有的文字內(nèi)容,最后放到一個數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁資源,開箱即用的配置 將爬取到的...

    wangym 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<