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

194
补充展位 Pages_Weblog_Get#0
文章摘要
此内容由人工摘要内容,并由AI根据文章内容进行润色
PuppeteerSharp 是一个适合在 Windows 平台抓取动态网页的三方库,用于 C# 控制无头浏览器,无需显示用户界面,特别适合自动化任务。安装简单,提供异步方法避免主线程阻塞,示例代码展示了启动浏览器、导航和获取标题及 HTML 内容的简便流程。

最近发现了一个比较适合在Windows平台用来抓取动态网页的三方库PuppeteerSharp,它貌似是一个流行的库(之前采集网页数据一直都是采取嵌入Chome内核浏览器插件来抓取源码的,逻辑控制上挺麻烦的,早点知道这个库就好了),用于在 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;
async Task PupperTest1()
{
        //启动一个浏览器并打开一个新的页面项(可以通过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.baidu.com"。最后,用page.TitleAsyncpage.GetContentAsync方法分别获取并打印网页的标题和html源码。

注意: 这个示例使用了异步方法(async 和 await)。这是因为在处理浏览器和页面时,可能需要等待一些操作完成,例如加载网页和执行 JavaScript。而且使用异步方法,可以避免阻塞主线程的执行。

补充展位
Pages_Weblog_Get#a49bc519-8e7d-4f20-a922-b092012ffa52
补充展位 Pages_Weblog_Get#1
补充展位 Pages_Weblog_Get#2
专题推荐
暂无内容
补充展位 Pages_Weblog_Get#3