C# Puppeteer 實戰(zhàn):實現(xiàn)動態(tài)網(wǎng)頁數(shù)據(jù)爬取
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
Puppeteer是一個Node.js庫,它提供了高級API來通過DevTools協(xié)議(Chrome DevTools Protocol https://devtools.chrome.com)控制Chrome或Chromium。 Puppeteer默認情況下無頭運行(headless)。 可以配置為運行完整的Chrome或Chromium,運行效果如下:
Puppeteer具備以下功能: 1、頁面截圖和生成PDF 2、抓取動態(tài)網(wǎng)頁內(nèi)容 3、自動化表單提交,UI測試,鍵盤輸入等 4、測試Chrome擴展程序
Puppeteer項目地址: https://github.com/puppeteer/puppeteer 在C#中調(diào)用,是使用了Puppeteer的移植版本,puppeteer-sharp,項目地址: https://github.com/hardkoded/puppeteer-sharp
Puppeteer-sharp是基于.Net Standard 2.0開發(fā),所以可以運行于NET Framework 4.6.1+、 .NET Core 2.0+的版本上. 操作系統(tǒng)的要求是Windows 8+或Windows Server2012+。如果需要在Windows 7上運行Puppeteer-Sharp,則可以通過設(shè)置LaunchOptions.WebSocketFactory屬性的值為System.Net.WebSockets.Client.Managed來實現(xiàn)。對于前端開發(fā)人員來說,Puppeteer最大的用處應(yīng)該就是自動化測試,而對于爬蟲開發(fā)人員,Puppeteer最大的用處是可以很方便的抓取動態(tài)網(wǎng)頁。Puppeteer就等于是一個人為操作的瀏覽器,你可以控制它抓取任何動態(tài)網(wǎng)頁內(nèi)容。
對比CEF 在前面的文章中,我使用了CEFSharp嵌入到界面中,來進行了動態(tài)頁面的抓取 使用Puppeteer也可以達到同樣的效果,但Puppeteer 用起來會更加方便, 因為它能以headless方式運行,不用顯示在界面上。而且它封裝了很多方便開發(fā)人員使用的函數(shù)。 本質(zhì) 上來說,Puppeteer是通過Chrome DevTools Protocol來控制Chromium瀏覽器,而CEF提供了Chromium瀏覽器本身,它是一個Web Browser控件。
抓取動態(tài)頁面
網(wǎng)頁截圖
截圖效果如下: 保存網(wǎng)頁為PDF
保存出來的PDF效果并不怎么好,應(yīng)該是文檔寬高沒控制好的原因。 重要說明: Puppeteer需要先下載Chromium瀏覽器的相關(guān)文件,也就是下面這句代碼執(zhí)行的操作
可能會出現(xiàn)下載失敗的情況(因為需要能訪問https://storage.googleapis.com),如下圖: 可以將上面那一行代碼替換為以下代碼,配置為從華為云鏡像下載
也可以通過以下方式(需要能訪問https://storage.googleapis.com): 訪問google chromium開源鏡像網(wǎng)站,下載Chromium瀏覽器 https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win_x64/ 下載后解壓到相應(yīng)位置,然后通過指定Chromium路徑來進行初始化
本文示例代碼 https://github.com/zhaotianff/PuppeteerDemo 如果在使用過程中,遇到了問題,可以在評論區(qū)留言也可以在github提個issue給我。 更加詳細的Puppeteer使用教程以及爬蟲相關(guān)知識,可以訪問我的github 閱讀原文:原文鏈接 該文章在 2025/6/26 21:48:57 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |