[nodejs] 爬虫加入并发限制并发实现痞客邦网页截图

news2025/7/14 7:38:17

今晚想给偶像的相册截个图,避免某一天网站挂了我想看看回忆都不行,用的是js的木偶师来爬虫台湾的部落格,效果图大概是这样,很不错

问题来了.我很贪心, 我想一次性把相册全爬了,也就是并发 ,这个人的相册有19个!!我一下子要开19个谷歌浏览器那个什么进程, 然后程序就崩了, 我就想能不能加入个限制? 每次只爬3个,3个完之后再继续.
ok,思路是这样:

1.假如有一个数组9个url(模拟9个相册的url),我按并发数切割,假如并发数是3

2.得到数据结构如下

3.然后循环这个数组, 再循环里面的小数组并添加进promiseChunk数组,用await Promise.all阻塞后面的其他切割的小数组运行,同时添加进AllChunksPromise数组,用来统计所有切割小数组完成后的时间,最后再Promise.all(把第二步的数据结构扁平为一维),在后面就可以计算得到代码执行时间
得到代码如下

结果还行,就是有点慢,毕竟后台调用浏览器...我的单核服务器cpu飙到100%

最后说下cheerio和puppeteer,这两个这两天都有用,cheerio解析静态网页很快,很适合抓数据。木偶可以执行js,这就很牛了,因为他是直接打开一个浏览器运行的,就是慢,各有优缺,优缺互补最好了

源代码已经上传github:https://github.com/DoctorTan/pixnetAlbumScreenshot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

题号1577 E.迷宫plus (有趣的BFS练习)

题目:样例: 输入 1 5 5 LRLRL LLLLL RRRRR UUUUU UUUUD 输出 4 思路: 一般遇到坐标迷宫,基本上都是DFS 或者 BFS ,这里多了一个条件就是要最少修改操作数,所以我们DFS很难控制这一条件,通过 BF…

堆排序之“TOP-K”问题

目录 一、什么是TOP-K问题 二、解决思路 一般的正常思路: 最优的解决思路: 三、文件流中实践TOP-K方法 创建包含足够多整数的文件: 找出最大的K个数 完整版代码: 前面我已经学习过使用“堆排序”对数组排降序了&#xf…

Goby 漏洞发布|F5 BIG-IP AJP 身份认证绕过漏洞(CVE-2023-46747)

漏洞名称:F5 BIG-IP AJP 身份认证绕过漏洞(CVE-2023-46747) English Name:F5 BIG-IP AJP authentication bypass vulnerability (CVE-2023-46747) CVSS core: 10 影响资产数: 307282 漏洞描述: Cisco …

idea导入git代码

第一种 在本地建一个文件夹,右击 git init git clone https://xxx/xxx.git 发现账号是自己的账号如何改成公司的账号呢?我用的方式是 控制面板 删除后,就可以再次导入代码,就可以输入公司的账号和密码。 第二种 在idea上导入…

比较BFS和DFS

目录 代码框架对比 引出模板 代码框架对比 dfs是栈的递归,bfs是队列的入出。 引出模板 x可以是栈可以是队列,也可以是随机队列、随机容器,一样可以把整张图遍历出来。

Go的命令行工具开发:使用Cobra库

今天我们将深入探讨如何使用Go语言和Cobra库来开发命令行工具。 命令行工具在软件开发中有着广泛的应用,它们快速、高效,且易于自动化。 Go语言因其简洁、高效而被广泛用于命令行工具的开发。Cobra库则是Go中用于构建命令行工具的重要库之一。 为什么选…

Android错题

ctrlo键没有onCrate() 只有继承这个Fragment框架 才能调用ctrlo键onCrate()

比赛准备笔记 --- TensotFlow、软件调试、数据预处理(图像,csv数据)

简介 TensorFlow是由Google团队开发的一个开源深度学习框架,完全基于Python语言设计。它的初衷是以最简单的方式实现机器学习和深度学习的概念,结合了计算代数的优化技术,使计算许多数学表达式变得简单。 优势: 强大的计算能力…

学习笔记二十六:storageclass存储类动态生成存储

storageclass存储类动态生成存储 storageclass作用StorageClass 定义provisioner:供应商reclaimPolicy:回收策略 安装nfs provisioner,用于配合存储类动态生成pv前置条件扩展:什么是sa安装nfs-provisioner程序创建storageclass&am…

DeepSDA

作者未提供代码

会议剪影 | 思腾合力携AI服务器亮相CNCC 2023中国计算机大会

10月26日-28日,第二十届中国计算机大会(CNCC 2023)在沈阳的沈阳新世界博览馆举办。本次大会注册参会观众达到1.3万名,同时还有超过3.6万人次通过CCF视频号直播观看开幕式、特邀报告和大会论坛。直播的4场论坛和活动,人气值达到73万。 “CNCC是…

AR眼镜定制开发-智能眼镜的主板硬件、软件

AR眼镜定制开发是一项复杂而又重要的工作,它需要准备相关的硬件设备和软件。这些设备包括多个传感器、显示装置和处理器等。传感器用于捕捉用户的动作和环境信息,如摄像头、陀螺仪、加速度计等;显示装置则用于将虚拟信息呈现给用户;处理器用于处理和协调…

关于服务端构件模型的典型解决方案

关于服务端构件模型的典型解决方案包括 适用于应用服务器的EJB模型(Sun公司J2EE的一部分)和COM模型(微软公司), 以及适用于Web服务器的servlet模型(基于Sun公司JSP技术)和Visual Basic及其他技…

NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063

nifi好用,但是对机器的性能要求也高,如果性能达不到,就会导致,问题发生,比如,队列里显示有内容,但是实际上队列是空的,清也清不掉,只能重启,很麻烦. 关于优化:1.配置前端页面刷新的间隔时间默认30秒,我们可以自己需要看的时候手动刷新我们改成300sec 2.修改CPU阻塞时间,提高CPU…

CSS3网页布局基础

CSS布局始于第2个版本,CSS 2.1把布局分为3种模型:常规流、浮动、绝对定位。CSS 3推出更多布局方案:多列布局、弹性盒、模板层、网格定位、网格层、浮动盒等。本章重点介绍CSS 2.1标准的3种布局模型,它们获得所有浏览器的全面、一致…

【Unity】Addressables资源管理笔记

【Unity】Addressables资源管理笔记 Addressables是一种用于管理资源的系统。允许以一种灵活的方式加载、卸载和管理资源,无论是场景、预制件、材质、纹理、音频剪辑等。 一、快速实现 安装Addressables插件 把对象添加到组 1)打开AddressablesGroups面…

本地创建一个虚拟机,并且能够连接到外网

1、从官网下载虚拟机 2、详细的安装教程 点击这里 其中这里的获取,我们店自动IP地址获取就行了,DNS也是自动获取就行了。 4、注意事项 4.1 linux命令:vim: command not found无法使用解决方案, 点击这里

tensorflow-gpu轮子安装

文章目录 简介一、虚拟环境二、安装 TensorFlow-GPU(最新)版本三、安装 TensorFlow-GPU(指定)版本四、打印信息4.1、检查当前TensorFlow版本号4.2、检查当前TensorFlow是否支持GPU4.3、检查当前PyTorch是否支持GPU4.4、选择Tensor…

漏洞复现--金蝶云星空 CommonFileServer 任意文件读取

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

redis 网课笔记

缓存 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库。 解决方案 给不同的key的TTL添加随机值利于Redis集群提高服务的可用性 哨兵模式、集群模式给缓存业务添加降级限流策略 ngxin或spring cloud gateway给业务…