使用PuppeteerSharp+C#抓取javascript动态网页的简单例子
最近发现了一个比较适合在Windows平台用来抓取动态网页的三方库PuppeteerSharp,它貌似是一个流行的库,用于在 C# 中控制无头浏览器。无头浏览器是指可以运行 JavaScript 代码,但不会显示任何用户界面的浏览器,这使得 PuppeteerSharp 非常适合用于自动化网页抓取、测试,或任何需要控制浏览器行为的场景,相比于之前自己基于cefsharp浏览器组件来抓取网页截图等信息来说要更方便一些,网上教程很多 这里顺便记一下。
下面是一个简单的示例,展示了如何使用 PuppeteerSharp 在 C# 中打开一个网页并获取其标题以及网页html文本:
一、安装 PuppeteerSharp。
- 通过 NuGet Package Manager 在 Visual Studio 中进行安装,
- 或者在命令行界面中运行以下命令进行安装:
Install-Package PuppeteerSharp
二、加载网页完成后读取网页的代码例子
using System;
using PuppeteerSharp;
class Program
{
static void Main()
{
// 启动一个浏览器并打开一个新的页面项 (可以通过LaunchOptions属性自行指定调用的谷歌浏览器的exe,但需要注意匹配版本)
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
using var page = await browser.NewPageAsync();
// 导航到指定网页
await page.GoToAsync("https://www.example.com");
// 获取并打印网页的标题
var title = await page.TitleAsync();
// 获取网页源码
var html = await page.GetContentAsync();
Console.WriteLine("Title: " + title);
}
}
例子中,第一步使用 Puppeteer.LaunchAsync 方法启动一个浏览器并创建一个新的页面。将 Headless 选项设置为 true,表示使用无头模式(即不显示浏览器)。 在调用page.GoToAsync 方法导航到 "https://www.example.com"。最后,我们使用page.TitleAsync 和page.GetContentAsync方法分别获取并打印网页的标题和html源码。
注意: 这个示例使用了异步方法(async 和 await)。这是因为在处理浏览器和页面时,可能需要等待一些操作完成,例如加载网页和执行 JavaScript。通过使用异步方法,我们可以避免阻塞主线程,并使代码更加响应和高效。