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


簡單介紹Puppeteer

Puppeteer是一個Node庫,它通過DevTools協議提供高級API來控制Chrome或Chromium。Puppeteer默認以無頭方式運行,但可以配置為有頭方式運行。Puppeteer中文”木偶”,很貼切,它可以使用node程序來模擬人操作瀏覽器的行為,比如點擊某個按鈕等。

Puppeteer可以做什么

在瀏覽器中手動執行的大多數操作都可以使用Puppeteer完成!例如:

  • 生成頁面的屏幕截圖和PDF。
  • 抓取SPA(單頁面應用程序)並生成預渲染內容(即“SSR”(服務器端渲染))。
  • 自動化表單提交,UI測試,鍵盤輸入等。
  • 創建最新的自動化測試環境。使用最新的JavaScript和瀏覽器功能直接在最新版本的Chrome中運行測試。
  • 捕獲時間線跟蹤 您的網站,以幫助診斷性能問題。
  • 測試Chrome擴展程序。

 

官網(入門一定要看的)

https://pptr.dev

 

一定使用async await來寫異步,這樣會更簡潔

我的應用場景

我老婆有一份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
版權說明:歡迎轉載,但必須注明出處,並在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
 


免責聲明!

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



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