如何使用Puppeteer-Sharp提取指定class属性div内的所有链接
解决方案
你只需要调整传入的JS选择器,限定只匹配指定类名div下的a标签即可,操作逻辑和你现有写法完全兼容:
把你原来的选择器document.querySelectorAll('a')替换为document.querySelectorAll('.你的目标类名 a')即可,这里的.你的目标类名要替换成你实际要匹配的div的类名,比如你要找类名为content-wrap的div内的链接,写法如下:
// 替换示例中的content-wrap为你实际要匹配的div类名即可 var jsSelectAnchorsInTargetDiv = @"Array.from(document.querySelectorAll('.content-wrap a')).map(a => a.href);"; var urls = await page.EvaluateExpressionAsync<string[]>(jsSelectAnchorsInTargetDiv);
如果有更复杂的匹配需求,可以按规则调整选择器:
- 匹配同时有classA和classB的div内的链接:选择器写
.classA.classB a - 匹配id为main的容器内、类名content的div内的链接:选择器写
#main .content a
如果不想写JS表达式,也可以用PuppeteerSharp原生API实现:
// 先获取所有符合类名要求的div元素 var targetDivs = await page.QuerySelectorAllAsync(".content-wrap"); List<string> urls = new List<string>(); foreach(var div in targetDivs) { // 逐个获取当前div内的a标签 var anchors = await div.QuerySelectorAllAsync("a"); foreach(var a in anchors) { // 提取href属性值 var href = await a.EvaluateAsync<string>("el => el.href"); urls.Add(href); } }
内容的提问来源于stack exchange,提问作者Webmover
相关产品推荐
相关产品推荐

