playwright是一个基于Node.js的浏览器自动化测试库,.netCore中也有对应的版本。写一些稍微复杂点的spider有时候会用到它。这里分享一下C#(基于.netCore6平台)调用playwright获取Cookies字符串的简单实现。
playwright的安装非常简单,通过nuget包引入即可,但是在导入nuget包后,还需要下载其对应的浏览器驱动(Chromium、Firefox、WebKit)。
在项目目录\bin\Debug\net6.0-windows(如果是控制台程序,目录名会不同) 中执行:./playwright.ps1 install 调用playwright的驱动安装脚本,其后会有一个下载过程,如下图所示:
这一步完成后,就可以通过代码进行playwright的使用了。本文只演示获取Cookies字符串。
我们创建playwright实例及其对应的上下文对象context,然后通过上下文context的CookiesAsync()方法读取网址对应的Cookies,CookiesAsync()方法将Cookies字符串中的键值对解析为BrowserContextCookiesResult类型对象,为了方便使用,示例中再将BrowserContextCookiesResult中的键值对属性信息拼接成Cookies字符串。代码示例如下,只做功能演示,未加入异常处理,Null判断等。
private async void button2_Click(object sender, EventArgs e)
{
// 初始化一个存储Cookies字符串的临时变量
string cookiesStr = string.Empty;
var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync();
var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
// 想要获取Cookies的目标地址
await page.GotoAsync("https://xxxxxxx.com");
var cookies = await context.CookiesAsync();
cookies.ToList().ForEach(cookie =>
{
cookiesStr += (cookie.Name + "=" + cookie.Value + ";");
});
// 删除字符串结尾的“;”
cookiesStr = cookiesStr.Remove(cookiesStr.Length - 1);
MessageBox.Show($"{cookiesStr}");
}
文章评论