日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# Puppeteer 實戰(zhàn):實現(xiàn)動態(tài)網(wǎng)頁數(shù)據(jù)爬取

admin
2025年6月26日 8:22 本文熱度 51

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)頁面的抓取

使用CEFSharp獲取動態(tài)網(wǎng)頁源碼

使用Puppeteer也可以達到同樣的效果,但Puppeteer 用起來會更加方便, 因為它能以headless方式運行,不用顯示在界面上。而且它封裝了很多方便開發(fā)人員使用的函數(shù)。

本質(zhì) 上來說,Puppeteer是通過Chrome DevTools Protocol來控制Chromium瀏覽器,而CEF提供了Chromium瀏覽器本身,它是一個Web Browser控件。

 

抓取動態(tài)頁面 

await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);var browser = await Puppeteer.LaunchAsync(new LaunchOptions            {                Headless = true            });var page = await browser.NewPageAsync();await page.GoToAsync("https://www.baidu.com");var html = await page.GetContentAsync(); 


網(wǎng)頁截圖 

await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);  browser = await Puppeteer.LaunchAsync(new LaunchOptions  {                 Headless = true  });  var page = await browser.NewPageAsync();  //打開一個新標簽  await page.GoToAsync("https://www.baidu.com"); //訪問頁面

 //設(shè)置截圖選項 ScreenshotOptions screenshotOptions = new ScreenshotOptions(); //screenshotOptions.Clip = new PuppeteerSharp.Media.Clip() { Height = 0, Width = 0, X = 0, Y = 0 };//設(shè)置截剪區(qū)域 screenshotOptions.FullPage = true//是否截取整個頁面 screenshotOptions.OmitBackground = false;//是否使用透明背景,而不是默認白色背景 screenshotOptions.Quality = 100//截圖質(zhì)量 0-100(png不可用) screenshotOptions.Type = ScreenshotType.Jpeg//截圖格式
 await page.ScreenshotAsync("D:\\a.jpg",screenshotOptions); 

截圖效果如下:


保存網(wǎng)頁為PDF

await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); browser = await Puppeteer.LaunchAsync(new LaunchOptions {                  Headless = true });var page = await browser.NewPageAsync();  //打開一個新標簽await page.GoToAsync("https://www.baidu.com"); //訪問頁面
//設(shè)置PDF選項PdfOptions pdfOptions = new PdfOptions();pdfOptions.DisplayHeaderFooter = false//是否顯示頁眉頁腳pdfOptions.FooterTemplate = "";   //頁腳文本pdfOptions.Format = new PuppeteerSharp.Media.PaperFormat(8.27m,11.69m);  //pdf紙張格式 英寸為單位pdfOptions.HeaderTemplate = "";   //頁眉文本pdfOptions.Landscape = false;     //紙張方向 false-垂直 true-水平pdfOptions.MarginOptions = new PuppeteerSharp.Media.MarginOptions() { Bottom = "0px"Left = "0px"Right = "0px"Top = "0px" }; //紙張邊距,需要設(shè)置帶單位的值,默認值是NonepdfOptions.Scale = 1m;            //PDF縮放,從0-1await page.PdfAsync(path, pdfOptions);

保存出來的PDF效果并不怎么好,應(yīng)該是文檔寬高沒控制好的原因。

重要說明:

Puppeteer需要先下載Chromium瀏覽器的相關(guān)文件,也就是下面這句代碼執(zhí)行的操作

await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

可能會出現(xiàn)下載失敗的情況(因為需要能訪問https://storage.googleapis.com),如下圖:

可以將上面那一行代碼替換為以下代碼,配置為從華為云鏡像下載

1 //可以通過下面的方式配置為從華為云鏡像下載2 BrowserFetcherOptions browserFetcherOptions = new BrowserFetcherOptions();3 browserFetcherOptions.Host = "https://repo.huaweicloud.com";4 await new BrowserFetcher(browserFetcherOptions).DownloadAsync(BrowserFetcher.DefaultRevision);

也可以通過以下方式(需要能訪問https://storage.googleapis.com):

訪問google chromium開源鏡像網(wǎng)站,下載Chromium瀏覽器

https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win_x64/

下載后解壓到相應(yīng)位置,然后通過指定Chromium路徑來進行初始化

1 LaunchOptions options = new LaunchOptions(); 2 options.Headless = true; 3 options.DefaultViewport = null; 4 //忽略證書錯誤 5 options.IgnoreHTTPSErrors = true; 6  7 //chromePath就是下載的Chromium瀏覽器解壓的位置11 options.ExecutablePath = chromePath;12 13 browser = await Puppeteer.LaunchAsync(options);

本文示例代碼

https://github.com/zhaotianff/PuppeteerDemo

如果在使用過程中,遇到了問題,可以在評論區(qū)留言也可以在github提個issue給我。

更加詳細的Puppeteer使用教程以及爬蟲相關(guān)知識,可以訪問我的github


閱讀原文:原文鏈接


該文章在 2025/6/26 21:48:57 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

国新欧美日韩一区二区三区| 丁香五月天堂网| 一区二区在线完整版| 国産精品久久久久久久gif| 天天爱天天要天天操天天插| 欧美日韩国产自在自线| 色呦哟视频| 婷婷五月欧美日韩国产免费| 欧美-区二区三区四区三级| 91日韩视频网站| 国产精品激情在线一区| 亚洲69美女| 精品久久久999| 色AV吧亚洲精品| 黄色无码视| 美女被网站在线看国产| 精品日韩成人A∨| 天天日天天操2| 亚洲视频激情小说| 久久久国产精品99| 97影院黄色| 国内自拍九九| 日本一区女人天堂| 免费AV网站不卡| 久久人妻一级精品| 国产 一区二区三区 在线| 日韩区国产| 国产一七在线观看| 日韩欧美在线观看午夜视频| 在线精品亚洲区一区二区| 鸡巴网在线| 欧美精品一区二区美女| 久久午夜小电影| 色悠悠另类| 综合图片一区二区三区| 8x8ⅹ国产精品一区二区| 日韩精品国产一区二区在线看青青草 | 日韩一区不卡一区二区在线观看| 色小说区| 小骚逼想要鸡吧操视频| 后入少妇合集|