使用PuppeteerSharp+C#抓取javascript动态网页的简单例子
PuppeteerPuppeteerSharpC#动态网页网页爬虫
编程开发
79
0 积分
最近发现了一个比较适合在Windows平台用来抓取动态网页的三方库PuppeteerSharp,它貌似是一个流行的库(之前采集网页数据一直都是采取嵌入Chome内核浏览器插件来抓取源码的,逻辑控制上挺麻烦的,早点知道这个库就好了),用于在 C# 中控制无头浏览器。无头浏览器是指可以运行 JavaScript 代码,但不会显示任何用户界面的浏览器,这使得 PuppeteerSharp 非常适合用于自动化网页抓取、测试,或任何需要控制浏览器行为的场景,相比于之前自己基于cefsharp浏览器组件来抓取网页截图等信息来说要更方便一些,网上教程很多 这里顺便记一下。
下面是一个简单的示例,展示了如何使用 PuppeteerSharp 在 C# 中打开一个网页并获取其标题以及网页html文本:
一、安装 PuppeteerSharp。
- 通过 NuGet Package Manager 在 Visual Studio 中进行安装,
- 或者在命令行界面中运行以下命令进行安装:
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.example.com"。最后,我们使用page.TitleAsync 和page.GetContentAsync方法分别获取并打印网页的标题和html源码。
注意: 这个示例使用了异步方法(async 和 await)。这是因为在处理浏览器和页面时,可能需要等待一些操作完成,例如加载网页和执行 JavaScript。通过使用异步方法,我们可以避免阻塞主线程,并使代码更加响应和高效。