位置: 编程技术 - 正文

Nodejs爬虫进阶教程之异步并发控制(nodejs爬取数据)

编辑:rootadmin

推荐整理分享Nodejs爬虫进阶教程之异步并发控制(nodejs爬取数据),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs爬虫技术,node.js爬虫教程,nodejs爬虫技术,nodejs爬虫框架crawler,nodejs爬取数据,nodejs爬虫技术,node js爬虫,nodejs爬虫技术,内容如对您有帮助,希望把文章链接给更多的朋友!

之前写了个现在看来很不完美的小爬虫,很多地方没有处理好,比如说在知乎点开一个问题的时候,它的所有回答并不是全部加载好了的,当你拉到回答的尾部时,点击加载更多,回答才会再加载一部分,所以说如果直接发送一个问题的请求链接,取得的页面是不完整的。还有就是我们通过发送链接下载图片的时候,是一张一张来下的,如果图片数量太多的话,真的是下到你睡完觉它还在下,而且我们用nodejs写的爬虫,却竟然没有用到nodejs最牛逼的异步并发的特性,太浪费了啊。

思路

这次的的爬虫是上次那个的升级版,不过呢,上次那个虽然是简单,但是很适合新手学习啊。这次的爬虫代码在我的github上可以找到=>NodeSpider。

整个爬虫的思路是这样的:在一开始我们通过请求问题的链接抓取到部分页面数据,接下来我们在代码中模拟ajax请求截取剩余页面的数据,当然在这里也是可以通过异步来实现并发的,对于小规模的异步流程控制,可以用这个模块=>eventproxy,但这里我就没有用啦!我们通过分析获取到的页面从中截取出所有图片的链接,再通过异步并发来实现对这些图片的批量下载。

抓取页面初始的数据很简单啊,这里就不做多解释啦

模拟ajax请求获取完整页面

接下来就是怎么去模拟点击加载更多时发出的ajax请求了,去知乎看一下吧!

Nodejs爬虫进阶教程之异步并发控制(nodejs爬取数据)

有了这些信息,就可以来模拟发送相同的请求来获得这些数据啦。

在代码中post这条请求 异步并发控制下载图片再获取完了所有的图片链接之后,即判定response.msg为空时,我们就要对这些图片进行下载了,不可能一条一条下对不对,因为如你所看到的,我们的图片足足有

没错,2万多张,不过幸好nodejs拥有神奇的单线程异步特性,我们可以同时对这些图片进行下载。但这个时候问题来了,听说同时发送请求太多的话会被网站封ip哒!这是真的吗?我不知道啊,没试过,因为我也不想去试( ̄? ̄〃),所以这个时候我们就需要对异步并发数量进行一些控制了。

在这里用到了一个神奇的模块=>async,它不仅能帮我们拜托难以维护的回调金字塔恶魔,还能轻松的帮我们进行异步流程的管理。具体看文档啦,因为我自己也不怎么会用,这里就只用到了一个强大的async.mapLimit方法。真的很厉害哦。

先看这里=>

mapLimit方法的第一个参数photos是所有图片链接的数组,也是我们并发请求的对象,asyncNum是限制并发请求的数量,如果没有这个参数的话,将会有同时两万多条请求发送过去,嗯,你的ip就会被成功的封掉,但当我们有这个参数时,比如它的值是,则它一次就只会帮我们从数组中取条链接,执行并发的请求,这条请求都得到响应后,再发送下条请求。告诉泥萌,并发到同时条没有事的,下载速度超级快,再往上就不知道咯,你们来告诉我...

以上所述给大家介绍了Nodejs爬虫进阶教程之异步并发控制的相关知识,希望对大家有所帮助。

使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目 Grunt简介Grunt是一款基于js和node.js的构建工具,由于这段时间node.js越来越火爆,grunt拥有丰富的开源社区支持,产生了很多插件。还有一些插件散落在node

快速掌握Node.js环境的安装与运行方法 安装程序NodeJS提供了一些安装程序,都可以在nodejs.org这里下载并安装。Windows系统下,选择和系统版本匹配的.msi后缀的安装文件。MacOSX系统下,选择.pkg

解析Node.js基于模块和包的代码部署方式 模块路径解析规则有经验的C程序员在编写一个新程序时首先从make文件写起。同样的,使用NodeJS编写程序前,为了有个良好的开端,首先需要准备好代码

标签: nodejs爬取数据

本文链接地址:https://www.jiuchutong.com/biancheng/370666.html 转载请保留说明!

上一篇:Node.js 条形码识别程序构建思路详解(vue条形码)

下一篇:使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目(如何使用node.js)

  • 增值税发票综合服务平台怎么下载
  • 非企业员工可以报销差旅费吗
  • 预计产品质量保证损失是什么意思
  • 以经营房产投资合营收固定收益如何开发票?
  • 小规模纳税人30万含专票吗
  • 企业所得税包含哪些税种
  • 邮政开票税点是什么意思
  • 一般纳税人普通发票免税吗
  • 供货商对账单跨月返利怎么做账?
  • 预付房租发票未到分录
  • 暂估含税还是不含税
  • 福利费结转以后年度
  • 境外企业分红怎么交税
  • 模具可以申请专利吗
  • 运输业过路费怎么做账
  • 个人取得的拆迁款需要缴纳个人所得税吗
  • 纳税申报一般什么时候
  • 没有发票的费用计入什么科目
  • 增值税普通发票税率
  • 缴纳印花税税会计分录怎么做
  • 公司替员工承担个税分录不再收回
  • 1697506708
  • 银行余额不平怎么快速找原因
  • 注册了店面没有营业执照
  • 个人贷款走公司账户流程
  • 返利发票税率
  • 设计服务交文化建设税吗
  • 有限责任公司注册要求
  • 工程机械租赁公司图片
  • win7系统管理员密码忘了怎么办
  • 关闭445端口方法命令
  • reader_sl.exe - reader_sl进程有什么用.
  • php编程风格规范要求
  • 总公司的固定资产可以划转子公司
  • 枇杷叶的功效与作用及副作用
  • phpcrawl
  • 全资子公司取得注册证可以免临床
  • 公司向个人支付劳务费
  • 短缺材料赔偿会计分录
  • 慕尼黑基姆湖
  • 个人所得税计提基数公式
  • php和python结合
  • python 虚拟环境
  • 车辆转让后的责任谁承担
  • 年末结转增值税明细
  • 第三方车主
  • 物流辅助服务属于什么科目
  • 进项税额不得从销项税额中抵扣是什么意思
  • 各种账簿的登记依据和登记方法分别是什么
  • 并发环境下,共享资源的正确使用方式是
  • 公允价值变动是一级科目吗
  • 白酒消费税最低计税价格核定范围包括
  • 医疗保险个人缴纳比例
  • 货物逾期保管费怎么算
  • 税收滞纳金的问题有哪些
  • 本月多交的增值税
  • 计提社保如何做分录
  • 汇兑损益形成的基础是
  • 未达起征点可以申请一次性创业补贴吗
  • 资产评估费怎么收
  • 其他应收款的核算范围包括
  • 扣发当月工资是什么意思
  • xp系统安装版如何安装
  • ubuntu 4.10
  • winxp系统怎么设置默认账户登入
  • os x 10.10 yosemite自动纠正怎么关?os x yosemite自动纠正功能关闭教程
  • Win7系统重装后鼠标键盘不能用怎么办
  • win7u盘没有安全选项卡
  • win10正式版和专业版的区别
  • win10非管理员账户开启管理员账户
  • unity软件设计
  • 批处理新建多个文件夹
  • Knockout visible绑定使用方法
  • jquery 选择
  • windows8.1 with bing
  • jquery get(0)
  • [置顶]bilinovel
  • python3 xlrd
  • Protocol Buffers(Protobuf)开发者指南---概览
  • 上海登高证查询官网入口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设