首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Puppeteer遍历具有相同类的div

如何使用Puppeteer遍历具有相同类的div
EN

Stack Overflow用户
提问于 2020-10-13 13:08:33
回答 1查看 594关注 0票数 1

使用puppeteer抓取页面我能够从具有相同类的div列表中获取内容,并在这些div列表中嵌套div列表。

代码语言:javascript
运行
AI代码解释
复制
<div class="parent">
    <div class="child"></div>
</div>
<div class="parent">
    <div class="child"></div>
    <div class="child"></div>
</div>
<div class="parent">
    <div class="child"></div>
    ...
</div>
...

现在我的问题是,我需要重复列表并在子类div上运行page.click()以打开lightbox,在lightbox中选择要单击的元素,然后对其运行page.pdf()。

我目前在父类div上有一个for循环,在子类div上有一个内部for循环。我不确定如何使用for循环索引值选择正确的div,因为没有第n个类,等等。

我只是想运行像这样的东西

代码语言:javascript
运行
AI代码解释
复制
for (let a = 0; a < data.length; a++) {
    for (let b = 0; b < data[a].length; b++) {
        await page.click('.parent[a] .child[b]');
        // other code here...
    }
}

打开lightbox,然后使用

代码语言:javascript
运行
AI代码解释
复制
await page.waitForSelector('.ReactModal')

抓取lightbox html并运行

代码语言:javascript
运行
AI代码解释
复制
await page.pdf({
    path: dir + "/"+ filename, 
    format: 'A4' 
});

任何关于可能的方法的指导意见都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 19:48:10

如果我理解正确的话,您可以尝试这样做:

代码语言:javascript
运行
AI代码解释
复制
for (const parent of await page.$$('.parent')) {
  for (const child of await parent.$$('.child')) {
    await child.click();
    await page.waitForSelector('.ReactModal'); // maybe check if this is not the same lightbox
    await page.pdf(/*...*/);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64335960

复制
相关文章
TortoiseSVN 从 GitHub 更新时发生异常
使用 TortoiseSVN 从 GitHub 仓库 Update 时,弹出错误提示对话框:
mzlogin
2020/04/16
1.4K0
TortoiseSVN 从 GitHub 更新时发生异常
使用 TortoiseSVN 从 GitHub 仓库 Update 时,弹出错误提示对话框:
零式的天空
2022/03/28
1.2K0
从0实现React 系列(二):组件更新
假设React是你日常开发的框架,在日复一日的开发中,你萌生了学习React源码的念头,在网上一顿搜索后,你发现这些教程可以分为2类:
一只图雀
2020/06/28
1.5K0
从0实现React 系列(二):组件更新
React中传入组件的props改变时更新组件的几种实现方法
我们使用react的时候常常需要在一个组件传入的props更新时重新渲染该组件,常用的方法是在componentWillReceiveProps中将新的props更新到组件的state中(这种state被成为派生状态(Derived State)),从而实现重新渲染。React 16.3中还引入了一个新的钩子函数getDerivedStateFromProps来专门实现这一需求。但无论是用componentWillReceiveProps还是getDerivedStateFromProps都不是那么优雅,而且容易出错。所以今天来探讨一下这类实现会产生的问题和更好的实现方案。
MudOnTire
2019/05/26
5.3K0
react 学习(三) 组件更新
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机制。
测不准
2022/04/08
1.1K0
react 学习(三) 组件更新
Flutter-常用组件(持续更新)Flutter-常用组件(持续更新)题纲:注:
相当于iOS开发中的给定尺寸的UIView。根据文档中的解释该控件会限制子控件的大小如果子控件允许的话。尤其是控件本身不好控制大小,则可以使用该控件来控制大小,列如:CircleAvatar。
用户8893176
2021/08/09
7440
更新时 Fiber 节点能否复用?
当产生更新时,workInProgressTree 的 Fiber 节点有两种方式生成:
玖柒的小窝
2021/12/07
5400
Oracle merge合并更新函数
本博客介绍一下Oracle merge合并函数,业务场景:新增数据的时候要先查询数据库是否已经有改数据,有数据就更新数据,没数据才新增数据,这是很常见的业务场景,如果是用Oracle数据库的话,其实直接用merge函数效率更快,而且merge函数性能也相对比较好
SmileNicky
2019/03/06
7620
plsql 触发器教程-当表1的某条数据更新时,表2的某些数据也自动更新
新建触发器,当更新test001中的D为某个值x时,test002中的D(不一定是D,也可以是C)也变成x
小小鱼儿小小林
2020/06/24
1.4K0
plsql 触发器教程-当表1的某条数据更新时,表2的某些数据也自动更新
PHP函数大全·持续更新
邮箱验证 function is_valid_email($email) { if (preg_match('/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/', $email)) { return true; } else { return false; } } OR function check_email($email) { $result = trim($email); if (filter_var($resu
骤雨重山
2022/01/17
9970
关于conda 更新时权限的问题
就被告知以下错误:PermissionError(13,'Permission denied)
戈贝尔光和热
2018/12/27
2.1K0
Vue是如何触发组件更新的?
Vue是数据驱动的一个视图框架,所谓数据驱动就是DOM是通过数据来映射的,只有在数据改变的情况下视图才会发生改变。
越陌度阡
2022/05/06
1K0
Vue是如何触发组件更新的?
项目中更新Stimulsoft组件的方法
Stimulsoft Ultimate是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。
全栈程序员站长
2022/09/06
2.3K0
项目中更新Stimulsoft组件的方法
js常用函数集锦(持续更新)
js常用函数规整 /* *获取某一段时间内所有日期 * @param starDay 开始时间 * @param endDay 结束时间 */ function getDayAll(starDay, endDay) { var arr = []; var dates = []; // 设置两个日期UTC时间 var db = new Date(starDay); var de = new Date(endDay); // 获取两个日期GTM时间 var s = db.
憧憬博客
2020/10/14
8500
MySQL 日期函数大全(更新中.....)
解析:以年-月-日这种格式输出。%r代码am还是pm。am表示凌晨和上午,pm表示下午和晚上。(0:00-12:00)。
贵哥的编程之路
2022/11/16
4.1K0
MySQL 日期函数大全(更新中.....)
Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129742.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/30
4.5K0
python更新pip失败_findwindow函数
HWND h = FindWindow(NULL, TEXT(“SomeApp”));
全栈程序员站长
2022/09/21
7990
JAVA库函数总结【持续更新】
生成随机数: Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值. Random rand = newRandom(); rand.nextInt(int s);//生成0~s内的整数 int randNumber =rand.nextInt(MAX - MIN + 1) + MIN;//生成指定范围的整数 关于web服务获取服务器ip、hostname: 1. string ip = Request.ServerVariables["Remote_Add
瑾诺学长
2018/09/21
9120
MySQL 高级函数大全(更新完成)
解析:CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。 WHEN是if THEN是输出语句 ESLE代表当上面的全部都不行。就用ELSE
贵哥的编程之路
2022/11/16
9090
MySQL 高级函数大全(更新完成)
点击加载更多

相似问题

当web组件属性被更新时,如何更新道具?

12

当支持更新时更新组件

32

组件不更新道具更新

13

设置状态在反应组件从道具和更新时,道具改变?

25

当状态道具更改时,响应组件不更新

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档