如何解决PuppeteerSharp - querySelectorAll + 单击
我是 puppeteersharp 的新手。你能告诉我,在我的思考过程和代码中,我哪里出错了。我正在尝试获取有关此产品的评论:
https://www.newegg.com/gigabyte-geforce-rtx-2060-gv-n2060oc-6gd/p/N82E16814932115
当您点击从中检索的评论标签时,所有评论都会加载
document.querySelectorAll(".tab-nav")[4]
此代码后的评论为空:
using (var browser = await Puppeteer.LaunchAsync(options))
{
using (var page = await browser.NewPageAsync().ConfigureAwait(false))
{
await page.GoToAsync("https://www.newegg.com/gigabyte-geforce-rtx-2060-gv-n2060oc-6gd/p/N82E16814932115");
var clickReviews = "document.querySelectorAll('.tab-nav')[4].click();";
var reviews = "Array.from(document.querySelectorAll('.comments-content'));";
await page.EvaluateExpressionAsync(clickReviews);
var reviews = await page.EvaluateExpressionAsync(reviews);
Console.WriteLine(reviews);
解决方法
EvaluateExpressionAsync
不会返回 DOM 元素。您应该构建一个序列化的输出。例如,带有评论文本的 string[]
。
var reviews = "Array.from(document.querySelectorAll('.comments-content')).map(r => r.innerText);";
var reviews = await page.EvaluateExpressionAsync<string[]>(reviews);
Console.WriteLine(reviews);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。