『QQ:1353814576』

使用PuppeteerSharp+C#抓取javascript动态网页的简单例子


最近发现了一个比较适合在Windows平台用来抓取动态网页的三方库PuppeteerSharp,它貌似是一个流行的库,用于在 C# 中控制无头浏览器。无头浏览器是指可以运行 JavaScript 代码,但不会显示任何用户界面的浏览器,这使得 PuppeteerSharp 非常适合用于自动化网页抓取、测试,或任何需要控制浏览器行为的场景,相比于之前自己基于cefsharp浏览器组件来抓取网页截图等信息来说要更方便一些,网上教程很多 这里顺便记一下。

使用PuppeteerSharp+C#抓取javascript动态网页的简单例子

下面是一个简单的示例,展示了如何使用 PuppeteerSharp 在 C# 中打开一个网页并获取其标题以及网页html文本:

一、安装 PuppeteerSharp。

  1. 通过 NuGet Package Manager 在 Visual Studio 中进行安装,
  2. 或者在命令行界面中运行以下命令进行安装: 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。通过使用异步方法,我们可以避免阻塞主线程,并使代码更加响应和高效。