Puppeteer學習筆記 (1)- 什么是Puppeteer


本文鏈接:https://www.cnblogs.com/hchengmx/p/11006263.html

1. phantomjs介紹

在介紹puppeteer之前必須介紹一下phantomjs,phantomjs是一個可以用JavaScript編程的無頭瀏覽器,它在后端使用了QtWebKit。

但是根據 https://github.com/ariya/phantomjs/issues/15344

由於缺乏有效的貢獻,我將要把這個項目存檔。
要是將來的某一天,要是我們想要重新開發spantomjs,我們會重新運行它。
PhantomJS版本2.1.1將會是最后一個已知的穩定版本。

2. puppeteer是什么

puppeteer是一個Node庫,是由Google官方開發的,它使用了 DevTools協議,提供了強大的api來控制 headless 的chrome或者Chromium。它也可以設置為控制完整的(非headless模式)的chrome或者Chromium。

3. puppeteer可以做什么

  • 為每個頁面生成截圖和PDF;
  • 抓取網頁內容,也就是我們所說的爬蟲;
  • 自動化表單的提交,UI測試,鍵盤輸入等;
  • 創建最新的自動化測試環境。使用最新的JavaScript和瀏覽器功能直接在最新版本的Chrome中運行測試;
  • 為你的網站創建一個 timeline trace,協助你診斷性能問題;
  • 測試Chrome的Extensions;

4. puppeteer和puppeteer-core

自1.7.0版本以來,Chrome官方都會發布一個 puppeteer-core 包,於 puppeteer的主要區別是,這個包默認不會下載 Chromium,更多區別可見 這里

5. puppeteer組織架構

根據puppeteer官方的說明,目前puppeteer的組織架構如下。

  • puppeteer 通過 DevTools協議 與瀏覽器進行通信。
  • Browser 實例可以有多個BrowserContext。
  • BrowserContext 定義了一個瀏覽器session,她可以擁有多個頁面。
  • Page 至少擁有一個frame:main frame。。還可以有iframe或者frame創建的其他frames。
  • Frame 至少有一個 execution context(執行上下文)
  • Worker 擁有一個單獨的 execution context(執行上下文),與 WebWorkers 通信。

參考資料:

  1. 用Python做爬蟲的各位,不要再用PhantomJS了
  2. 因內部鬧矛盾,PhantomJS 宣布封存歸檔暫停開發
  3. PhantomJS - Scriptable Headless Browser


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM