在现代Web开发和自动化测试中, PuppeteerSharp 是一个强大的库,它允许我们在没有图形界面的情况下运行浏览器,从而实现网页自动化操作、数据抓取、截图和生成PDF等功能。
Install-Package PuppeteerSharp
此外,还需要下载Chromium浏览器的二进制文件。PuppeteerSharp 提供了一个工具类 BrowserFetcher
来完成
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
//在这里,`Headless = true` 表示浏览器以后台模式运行。如果你希望看到浏览器界面,可以将其设置为 `false`。
await page.GoToAsync("https://www.dotnetshare.com/");
await page.ScreenshotAsync("example.png", new ScreenshotOptions { FullPage = true });
FullPage = true
表示截取整个页面,而不仅仅是当前视口。
await page.PdfAsync("example.pdf", new PdfOptions { Format = PaperFormat.A4 });
可以通过 PdfOptions
设置纸张大小、方向等参数。
await page.ClickAsync("#buttonId");
await page.TypeAsync("#inputId", "输入的文本");
await page.SubmitAsync("#formId");
var textContent = await page.EvaluateExpressionAsync<string>("document.querySelector('#elementId').textContent");
var attributeValue = await page.EvaluateExpressionAsync<string>("document.querySelector('#elementId').getAttribute('attributeName')");
完成操作后,记得关闭浏览器
await browser.CloseAsync();
需要使用代理服务器,可以在启动浏览器时配置
var proxy = new ProxyOptions
{
Server = "proxy.xxx.com",
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");
我们需要抓取某个用户的公开信息:
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("https://www.linkedin.com/in/username");
// 等待页面加载完成
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 都能够满足你的需求。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有