簡單介紹Puppeteernode
Puppeteer是一個Node庫,它經過DevTools協議提供高級API來控制Chrome或Chromium。Puppeteer默認以無頭方式運行,但能夠配置爲有頭方式運行。Puppeteer中文」木偶」,很貼切,它可使用node程序來模擬人操做瀏覽器的行爲,好比點擊某個按鈕等。git
Puppeteer能夠作什麼github
在瀏覽器中手動執行的大多數操做均可以使用Puppeteer完成!例如:web
- 生成頁面的屏幕截圖和PDF。
- 抓取SPA(單頁面應用程序)並生成預渲染內容(即「SSR」(服務器端渲染))。
- 自動化表單提交,UI測試,鍵盤輸入等。
- 建立最新的自動化測試環境。使用最新的JavaScript和瀏覽器功能直接在最新版本的Chrome中運行測試。
- 捕獲時間線跟蹤 您的網站,以幫助診斷性能問題。
- 測試Chrome擴展程序。
官網(入門必定要看的)ajax
https://pptr.devchrome
必定使用async await來寫異步,這樣會更簡潔npm
個人應用場景瀏覽器
我老婆有一份list,list中有1000個item左右,每一個item須要在網站中搜索,點擊進入詳情,而後切換tab,點擊進入另外一個詳情,而後獲得某些信息。若是手動操做,大概操做完一個須要3分鐘左右,累計須要3000分鐘(50小時),天天投入1-2小時(大量重複的操做很是無趣,並且累)。我見此情景,分析了下系統,發現很難使用一些ajax的接口就達到目的,看來系統自己作了一些處理。因此我打算使用Puppeteer來幫老婆完成這個工做,大概花了2-3天時間,對Puppeteer有了一些初步的瞭解,而且爬取了第一步的數據。我打算分步驟抓取數據,遞進的去獲得最終的一份清單。服務器
幾個我用到的對象的關係異步
遇到的一些問題
1. 安裝問題
完整安裝:npm i puppeteer --save 須要設置下淘寶鏡像源
+ puppeteer_download_host = https://npm.taobao.org/mirrors
2. ElementHandle類型的對象click方法無論用處理方法
啓動代碼以下
小結
Puppeteer整體來講很是好用,只不過是用過程當中須要不斷去看文檔熟悉接口,是用來爬取各類網頁內容的」利器」。此次我也支持接觸了Puppeteer的以小部分功能而已,之後爭取可以在更多合適的場景去使用它。