PuppeteerSharp无头浏览器.NetSdk(Puppeteer)

编程

Puppeteer

首先我们需要了解下Puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的NodeJS库。

什么是无头浏览器?通俗点讲就是没有界面的浏览器。通过浏览器提供的API,进行调用,可以实现丰富的功能。网上有使用Puppeteer进行爬虫开发的案例。

通过无头浏览器提供的这项功能,我们可以很方便的在服务端进行开发,完成一些复杂的网页交互。

Puppeteer支持导出图片(JPG、PNG)、PDF等。

今天这里注重讲下基于Puppeteer用C#语言实现的PuppeteerSharp SDK。

PuppeteerSharp

PuppeteerSharp基于NetStandard 2.0库,最低平台版本要求是.NET Framework 4.6.1和.NET Core 2.0。

接下里,我们做一个示例程序,这里我新建一个.netcore2.0控制台应用程序,然后通过nuget添加对PuppeteerSharp的引用。

然后写一段示例程序,这里我们以“OSC”首页为例,导出PDF。

 static void Main(string[] args)

{

Test().Wait();

Console.WriteLine("Hello World!");

}

static async Task Test()

{

try

{

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

using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions()

{

Headless = true //偵測時可設定false觀察網頁顯示結果(註:非Headless時不能匯出PDF)

}))

{

using (var page = await browser.NewPageAsync())

{

await page.GoToAsync("https://www.oschina.net/");

//透過SetViewport控制視窗大小決定抓圖尺寸

await page.SetViewportAsync(new ViewPortOptions

{

Width = 960,

Height = 1000,

IsMobile = false,

IsLandscape = false,

});

await page.WaitForTimeoutAsync(1500);

await page.PdfAsync($"D:\FreewayTraffic\Snapshot.pdf", new PdfOptions()

{

PrintBackground = true,

MarginOptions = new PuppeteerSharp.Media.MarginOptions()

{

Left = "20px",

Right = "20px",

Bottom = "20px",

Top = "20px",

},

Format = PuppeteerSharp.Media.PaperFormat.A4,

});

}

}

}

catch (Exception ex)

{

Console.WriteLine(ex.ToString());

throw;

}

}

首先需要注意的是:

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

这段代码,首次启动程序时,它会检测当前执行程序.local-chromium目录下是否有对应版本的chrome.exe,没有的话,首次会启动下载,文件大小问60MB左右。

下载完成后的目录文件如下图:

这样我们就可以启动刚开始的程序了,看看效果吧!

上面就是导出的PDF和图片。

PDF导出的效果如上。

至此,关于PuppeteerSharp的使用算是完成了。

 

以上是 PuppeteerSharp无头浏览器.NetSdk(Puppeteer) 的全部内容, 来源链接: utcz.com/z/511782.html

回到顶部