admin管理员组文章数量:1029586
PuppeteerSharp:在.NET中驾驭浏览器的强大工具
在现代Web开发和自动化测试中, PuppeteerSharp 是一个强大的库,它允许我们在没有图形界面的情况下运行浏览器,从而实现网页自动化操作、数据抓取、截图和生成PDF等功能。
特性
- 1. 功能强大:PuppeteerSharp 提供了丰富的API,可以实现网页导航、元素选择、截图、生成PDF、模拟用户操作等功能。
- 2. 跨平台兼容:它支持.NET Core和.NET Framework,可以在Windows、Linux和macOS上运行。
- 3. 与.NET生态无缝集成:对于熟悉C#的我们来说,PuppeteerSharp 提供了直观的API,易于上手。
- 4. 社区支持:PuppeteerSharp 拥有一个活跃的开源社区,我们可以轻松找到支持和解决方案。
安装 PuppeteerSharp
代码语言:javascript代码运行次数:0运行复制Install-Package PuppeteerSharp
此外,还需要下载Chromium浏览器的二进制文件。PuppeteerSharp 提供了一个工具类 BrowserFetcher
来完成
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
PuppeteerSharp 的用法
初始化浏览器
代码语言:javascript代码运行次数:0运行复制var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
//在这里,`Headless = true` 表示浏览器以后台模式运行。如果你希望看到浏览器界面,可以将其设置为 `false`。
打开网页
代码语言:javascript代码运行次数:0运行复制await page.GoToAsync("/");
截图
代码语言:javascript代码运行次数:0运行复制await page.ScreenshotAsync("example.png", new ScreenshotOptions { FullPage = true });
FullPage = true
表示截取整个页面,而不仅仅是当前视口。
生成PDF
代码语言:javascript代码运行次数:0运行复制await page.PdfAsync("example.pdf", new PdfOptions { Format = PaperFormat.A4 });
可以通过 PdfOptions
设置纸张大小、方向等参数。
模拟用户操作
点击按钮
代码语言:javascript代码运行次数:0运行复制await page.ClickAsync("#buttonId");
填写表单
代码语言:javascript代码运行次数:0运行复制await page.TypeAsync("#inputId", "输入的文本");
提交表单
代码语言:javascript代码运行次数:0运行复制await page.SubmitAsync("#formId");
提取页面数据
提取文本内容
代码语言:javascript代码运行次数:0运行复制var textContent = await page.EvaluateExpressionAsync<string>("document.querySelector('#elementId').textContent");
提取属性值
代码语言:javascript代码运行次数:0运行复制var attributeValue = await page.EvaluateExpressionAsync<string>("document.querySelector('#elementId').getAttribute('attributeName')");
关闭浏览器
完成操作后,记得关闭浏览器
代码语言:javascript代码运行次数:0运行复制await browser.CloseAsync();
高级用法
设置代理
需要使用代理服务器,可以在启动浏览器时配置
代码语言:javascript代码运行次数:0运行复制var proxy = new ProxyOptions
{
Server = "proxy.xxx",
Port = 8080,
Username = "username",
Password = "password"
};
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { $"proxy-server=http://{proxy.Server}:{proxy.Port}" }
});
等待页面加载
对于动态加载的页面,可以使用 WaitForSelectorAsync
或 WaitForFunctionAsync
等方法:
await page.WaitForSelectorAsync("div.main-content");
实际案例:抓取LinkedIn页面
我们需要抓取某个用户的公开信息:
代码语言:javascript代码运行次数:0运行复制using PuppeteerSharp;
using System;
using System.Threading.Tasks;
classProgram
{
public static async Task Main()
{
// 下载浏览器组件
awaitnew BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
// 启动浏览器
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });
// 打开新页面
var page = await browser.NewPageAsync();
// 导航到LinkedIn页面
await page.GoToAsync(";);
// 等待页面加载完成
await page.WaitForSelectorAsync("div.profile");
// 提取用户信息
var name = await page.EvaluateExpressionAsync<string>("document.querySelector('.text-heading-xlarge').textContent");
var headline = await page.EvaluateExpressionAsync<string>("document.querySelector('.text-body-medium').textContent");
Console.WriteLine($"Name: {name}");
Console.WriteLine($"Headline: {headline}");
// 关闭浏览器
await browser.CloseAsync();
}
}
总结
PuppeteerSharp 是一个功能强大的工具,为我们提供了一个简单而强大的接口,用于控制浏览器。无论是自动化测试、数据抓取还是生成网页快照,PuppeteerSharp 都能够满足你的需求。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-20,如有侵权请联系 cloudcommunity@tencent 删除浏览器数据自动化测试表单工具PuppeteerSharp:在.NET中驾驭浏览器的强大工具
在现代Web开发和自动化测试中, PuppeteerSharp 是一个强大的库,它允许我们在没有图形界面的情况下运行浏览器,从而实现网页自动化操作、数据抓取、截图和生成PDF等功能。
特性
- 1. 功能强大:PuppeteerSharp 提供了丰富的API,可以实现网页导航、元素选择、截图、生成PDF、模拟用户操作等功能。
- 2. 跨平台兼容:它支持.NET Core和.NET Framework,可以在Windows、Linux和macOS上运行。
- 3. 与.NET生态无缝集成:对于熟悉C#的我们来说,PuppeteerSharp 提供了直观的API,易于上手。
- 4. 社区支持:PuppeteerSharp 拥有一个活跃的开源社区,我们可以轻松找到支持和解决方案。
安装 PuppeteerSharp
代码语言:javascript代码运行次数:0运行复制Install-Package PuppeteerSharp
此外,还需要下载Chromium浏览器的二进制文件。PuppeteerSharp 提供了一个工具类 BrowserFetcher
来完成
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
PuppeteerSharp 的用法
初始化浏览器
代码语言:javascript代码运行次数:0运行复制var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
//在这里,`Headless = true` 表示浏览器以后台模式运行。如果你希望看到浏览器界面,可以将其设置为 `false`。
打开网页
代码语言:javascript代码运行次数:0运行复制await page.GoToAsync("/");
截图
代码语言:javascript代码运行次数:0运行复制await page.ScreenshotAsync("example.png", new ScreenshotOptions { FullPage = true });
FullPage = true
表示截取整个页面,而不仅仅是当前视口。
生成PDF
代码语言:javascript代码运行次数:0运行复制await page.PdfAsync("example.pdf", new PdfOptions { Format = PaperFormat.A4 });
可以通过 PdfOptions
设置纸张大小、方向等参数。
模拟用户操作
点击按钮
代码语言:javascript代码运行次数:0运行复制await page.ClickAsync("#buttonId");
填写表单
代码语言:javascript代码运行次数:0运行复制await page.TypeAsync("#inputId", "输入的文本");
提交表单
代码语言:javascript代码运行次数:0运行复制await page.SubmitAsync("#formId");
提取页面数据
提取文本内容
代码语言:javascript代码运行次数:0运行复制var textContent = await page.EvaluateExpressionAsync<string>("document.querySelector('#elementId').textContent");
提取属性值
代码语言:javascript代码运行次数:0运行复制var attributeValue = await page.EvaluateExpressionAsync<string>("document.querySelector('#elementId').getAttribute('attributeName')");
关闭浏览器
完成操作后,记得关闭浏览器
代码语言:javascript代码运行次数:0运行复制await browser.CloseAsync();
高级用法
设置代理
需要使用代理服务器,可以在启动浏览器时配置
代码语言:javascript代码运行次数:0运行复制var proxy = new ProxyOptions
{
Server = "proxy.xxx",
Port = 8080,
Username = "username",
Password = "password"
};
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { $"proxy-server=http://{proxy.Server}:{proxy.Port}" }
});
等待页面加载
对于动态加载的页面,可以使用 WaitForSelectorAsync
或 WaitForFunctionAsync
等方法:
await page.WaitForSelectorAsync("div.main-content");
实际案例:抓取LinkedIn页面
我们需要抓取某个用户的公开信息:
代码语言:javascript代码运行次数:0运行复制using PuppeteerSharp;
using System;
using System.Threading.Tasks;
classProgram
{
public static async Task Main()
{
// 下载浏览器组件
awaitnew BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
// 启动浏览器
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });
// 打开新页面
var page = await browser.NewPageAsync();
// 导航到LinkedIn页面
await page.GoToAsync(";);
// 等待页面加载完成
await page.WaitForSelectorAsync("div.profile");
// 提取用户信息
var name = await page.EvaluateExpressionAsync<string>("document.querySelector('.text-heading-xlarge').textContent");
var headline = await page.EvaluateExpressionAsync<string>("document.querySelector('.text-body-medium').textContent");
Console.WriteLine($"Name: {name}");
Console.WriteLine($"Headline: {headline}");
// 关闭浏览器
await browser.CloseAsync();
}
}
总结
PuppeteerSharp 是一个功能强大的工具,为我们提供了一个简单而强大的接口,用于控制浏览器。无论是自动化测试、数据抓取还是生成网页快照,PuppeteerSharp 都能够满足你的需求。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-20,如有侵权请联系 cloudcommunity@tencent 删除浏览器数据自动化测试表单工具本文标签: PuppeteerSharp在NET中驾驭浏览器的强大工具
版权声明:本文标题:PuppeteerSharp:在.NET中驾驭浏览器的强大工具 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747601535a2191633.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论