首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Puppeteer中的page.evaluate内循环

在Puppeteer中的page.evaluate内循环
EN

Stack Overflow用户
提问于 2019-09-03 06:33:58
回答 1查看 1.3K关注 0票数 1

我在page.evaluate方法中有一个循环。该循环迭代查询选择器,该选择器从页面中的文本元素的多个实例中捕获innerText。

我收到一个错误评估失败:无法读取'innerText‘的属性

我试图在page.evaluate外部循环,但无法从page.evaluate函数中访问我的迭代变量。

//以下是我试图实现的目标的粗略草稿:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    const scrapeData = [];
    const data = await page.evaluate(() => {

    // Iteration to capture each target text in the page  
    for (var i = 1; i < 9; i++) {

        // Select target text 
        const serpDesc = document
        .querySelector(
          `#rso > div:nth-child(4) > div > div:nth-child(${i}) > div > div > div.s > div > span`
        )
        .innerText.trim();

      // Build an array for the captured text
      scrapeData[i] = serpDesc

      return {
        serpDesc
      };
    };
  });

我的目标是将页面中的一些链接描述(纯文本)放入一个数组中。没有迭代代码,一切都很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-03 14:11:15

尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const serpDesc = await page.evaluate(
  () => [...document.querySelectorAll(`#rso > div:nth-child(4) > div > div:nth-child(${i}) > div > div > div.s > div > span`)].map(elem => elem.innerText)
);

您可能需要重新构造选择器,或者可能需要将serpDesc函数包装在for offorEach循环中。

你也可以尝试像这样的东西

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
async function elSelector(i) {
            //Where i is the incremented value you pass
            
            await page.evaluate((i) => {
            
                let eval = $('yourSelector').toArray();
                $(eval[i]).innerText
            }, i)

        }
        
for (i=0; i<9; i++) {
  elSelector(i);
  }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57766156

复制
相关文章
在 JavaScript 中优雅的提取循环内的数据 [每日前端夜话0x2D]
从 A 行开始的循环用来记录文件路径。它是 for-of 循环和递归的组合(递归调用在 B 行)。
疯狂的技术宅
2019/03/27
3.7K0
在 JavaScript 中优雅的提取循环内的数据 [每日前端夜话0x2D]
在 SCF 中运行 Puppeteer
Puppeteer 是一个 Node.js 库, 提供了一组封装良好的接口, 使你可以通过 DevTools 协议控制 Chrome. 本文介绍如何在 SCF 中使用 Puppeteer.
ritchiechen
2019/04/05
6.7K10
在 SCF 中运行 Puppeteer
上天的Node.js之爬虫篇 15行代码爬取京东淘宝资源 【深入浅出】
中的所有<a> 标签对应的跳转网页中的所有 title的文字内容,最后放到一个数组中。
Peter谭金杰
2019/08/02
2.1K0
使用Node.js爬取任意网页资源并输出高质量PDF文件到本地~
中的所有<a> 标签对应的跳转网页中的所有 title的文字内容,最后放到一个数组中。
Peter谭金杰
2019/08/02
3.3K0
在循环内使用闭包(Closures)
闭包的本质是一个内部函数访问其作用域之外的变量。闭包可以用于实现诸如 私有变量 和 创建工厂函数之类的东西。
前端迷
2018/10/22
1.2K0
puppeteer爬虫教程_python爬虫入门最好书籍
为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。
全栈程序员站长
2022/09/19
1.9K0
puppeteer爬虫教程_python爬虫入门最好书籍
web自动化测试-puppeteer入门与实践
对于web的自动测试,很多人熟悉的是selenium、webdriver的解决方案,比如说webdriver是按照server – client的经典设计模式设计的,server端是remote server,可以是任意的浏览器。以及常用到的一个爬虫框架PhantomJS 。对于这两款工具环境安装复杂,API 调用不友好的问题。puppeteer是一款基于chrome的自动化测试以及爬虫工具。
测试邦
2019/07/24
1.6K0
web自动化测试-puppeteer入门与实践
Node.js爬虫之使用puppeteer爬取百度图片
本文通过puppeteer实现对百度图片的抓取,这里简单介绍下puppeteer puppeteer可以使我们编写一套代码控制浏览器动作,“你可以在浏览器中手动执行的绝大多数操作都可以使用 Puppeteer 来完成” 因此Puppeteer常用于测试和爬虫---官方文档
切图仔
2022/09/14
1.5K0
Node.js爬虫之使用puppeteer爬取百度图片
如何使用Puppeteer在Node JS服务器上实现动态网页抓取
动态网页抓取是指通过模拟浏览器行为,获取网页上的动态生成的数据,如JavaScript渲染的内容、Ajax请求的数据等。动态网页抓取的难点在于如何处理网页上的异步事件,如点击、滚动、等待等。Puppeteer是一个基于Node JS的库,它提供了一个高级的API,可以控制Chrome或Chromium浏览器,实现动态网页抓取。本文将介绍如何使用Puppeteer在Node JS服务器上实现动态网页抓取,并给出一个简单的案例。
jackcode
2023/08/24
9730
自动化 Web 性能分析之 Puppeteer 爬虫实践
通过上篇文章《自动化 Web 性能优化分析方案》的分享想必大家对“百策系统”有了初步的了解。本文将向大家介绍自动化性能分析使用的核心库——Puppeteer,并结合页面登录场景,介绍 Puppeteer 在百策系统中的应用。
政采云前端团队
2019/12/20
3.5K0
自动化 Web 性能分析之 Puppeteer 爬虫实践
Puppeteer 入门指引
Puppeteer 是一个 Node library,提供了一套完整的通过 DevTools 协议操纵 Chrome 或 Chromium 的 API。Puppeteer 默认以 无头(headless) 的方式运行, 也可以使用 GUI 的方式运行 Chrome 和 Chromium。
MudOnTire
2022/03/22
1.7K0
Puppeteer 入门指引
Puppeteer实现选择性截图
截图的代码很简单,比如如果我想实现对百度搜索框部分截图怎么做呢,查询page.screenshot api 可以看到其api说明中包含clip 选项,用于设置截图的x,y,width,hegiht.通过查看元素可以看到搜索框部分的form id 为 form 。
Jerremy
2018/05/09
8.5K5
Puppeteer实现选择性截图
puppeteer使用指南-入门
上篇文章讲解了如何安装puppeteer,这篇文章我们通过几个小案例来了解一下puppeteer的常用api的使用方法。
挥刀北上
2021/02/02
2.7K0
puppeteer使用指南-入门
爬虫使用浏览器渲染的一些最佳实践
在做爬虫的时候,总会遇到一些动态网页,他们的内容是 Ajax 加载甚至是加密的。虽然说对于一些大站来说,分析接口是值得的,但是对于众多的小网站来说,一个一个分析接口太繁琐了,这时候直接使用浏览器渲染就简单得多了。
爬虫技术学习
2023/02/10
2.4K0
爬虫使用浏览器渲染的一些最佳实践
如何使用Puppeteer进行新闻网站数据抓取和聚合
Puppeteer是一个基于Node.js的库,它提供了一个高级的API来控制Chrome或Chromium浏览器。通过Puppeteer,我们可以实现各种自动化任务,如网页截图、PDF生成、表单填写、网络监控等。本文将介绍如何使用Puppeteer进行新闻网站数据抓取和聚合,以网易新闻和杭州亚运会为例。
jackcode
2023/08/30
4550
如何使用Puppeteer进行新闻网站数据抓取和聚合
如何解决selenium被检测,实现淘宝登陆
因为不少大网站有对selenium的js监测机制。比如:navigator.webdriver,navigator.languages,navigator.plugins.length……
十四君
2019/11/28
4.7K0
使用puppeteer抓取受限网站
不要相信前端是安全的,今天简单验证一下(但是希望大家支持正版,支持原作者,毕竟写书不易)。
Jerremy
2018/05/03
3.1K0
使用puppeteer抓取受限网站
Puppeteer踩坑问题记录
具体怎么开始和API,参考文档:https://zhaoqize.github.io/puppeteer-api-zh_CN/
luciozhang
2023/04/22
1.8K0
Puppeteer踩坑问题记录
Puppeteer 初探
Puppeteer是一个Node库,它提供了一个高级API来通过DevTools协议控制无头 Chrome或Chromium ,它也可以配置为使用完整(非无头)Chrome或Chromium。
CloudCat
2022/06/15
2.7K0
Puppeteer 初探
使用Puppeteer爬取地图上的用户评价和评论
在互联网时代,获取用户的反馈和意见是非常重要的,它可以帮助我们了解用户的需求和喜好,提高我们的产品和服务质量。有时候,我们需要从地图上爬取用户对某些地点或商家的评价和评论,这样我们就可以分析用户对不同地区或行业的态度和偏好。但是,如何从地图上爬取用户评价和评论呢?本文将介绍一种使用Puppeteer的方法,它是一个基于Node.js的库,可以控制Chrome或Chromium浏览器进行各种操作,包括爬虫。
jackcode
2023/09/06
4440
使用Puppeteer爬取地图上的用户评价和评论

相似问题

尝试在page.evaluate()函数内执行for循环- Puppeteer

110

程序在page.evaluate - Puppeteer NodeJS处的嵌套循环中冻结

112

更改page.evaluate Puppeteer (Javascript)中变量的值

235

Nodejs/Puppeteer -如何使用page.evaluate

11

puppeteer page.evaluate无法使用参数exposeFunction

175
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文