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