使用puppeteer爬取網頁數據實踐小結

簡單介紹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的以小部分功能而已,之後爭取可以在更多合適的場景去使用它。

 

做者: 張雪飛
出處: https://zhangxuefei.site/p/2210 版權說明:歡迎轉載,但必須註明出處,並在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
相關文章
相關標籤/搜索