位置: 编程技术 - 正文

利用Node.js制作爬取大众点评的爬虫(nodejs制作网站)

编辑:rootadmin

推荐整理分享利用Node.js制作爬取大众点评的爬虫(nodejs制作网站),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js怎么样,node. js教程,nodejs制作网站,用nodejs做的项目,node.js怎么用,node.js怎么用,node.js怎么用,nodejs制作网站,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

Node.js天生支持并发,但是对于习惯了顺序编程的人,一开始会对Node.js不适应,比如,变量作用域是函数块式的(与C、Java不一样);for循环体({})内引用i的值实际上是循环结束之后的值,因而引起各种undefined的问题;嵌套函数时,内层函数的变量并不能及时传导到外层(因为是异步)等等。

一、 API分析

大众点评开放了查询餐馆信息的API,这里给出了城市与cityid之间的对应关系,

链接: 1、start为步进数,表示分步获取信息的index,与nextStartIndex字段相对应;

2、cityid表示城市id,比如,合肥对应于;

3、regionid表示区域id,每一个id代表含义在start=0时rangeNavs字段中有解释;

4、categoryid表示搜索商家的分类id,比如,美食对应的id为,具体每一个id的含义参见在start=0时categoryNavs字段;

5、sortid表示商家结果的排序方式,比如,0对应智能排序,2对应评价最好,具体每一个id的含义参见在start=0时sortNavs字段。

在GET返回的JSON串中list字段为商家列表,id表示商家的id,作为商家的唯一标识。在返回的JSON串中是没有商家的口味、环境、服务的评分信息以及经纬度的;

因而我们还需要爬取两个商家页面: 1、逐步爬取searchshop API的取商家基本信息列表;

利用Node.js制作爬取大众点评的爬虫(nodejs制作网站)

2、通过爬取的所有商家的id,异步并发爬取评分信息、经纬度;

3、最后将三份数据通过id做聚合,输出成json文件。

二、爬虫实现

Node.js爬虫代码用到如下的第三方模块:

1、superagent,轻量级http请求库,模仿了浏览器登录;

2、cheerio,采用jQuery语法解析HTML元素,跟Python的PyQuery相类似;

3、async,牛逼闪闪的异步流程控制库,Node.js的必学库。

导入依赖库:

声明全局变量,用于存放配置项及中间结果:

判断一个id是否在前面出现过,若object没有该id,则为undefined(注意不是null):

采取回调函数的方式,实现顺序逐步地递归调用爬虫函数:

在调用爬虫函数时,采用async的mapLimit函数实现对并发的控制;采用async的until对并发的协同处理,保证三份数据结果的id一致性(不会因为并发完成时间不一致而丢数据):

其中,parseShop与parseMap分别为解析商家详情页、商家地图页:

将array的每一个商家信息,逐行写入到json文件中:

总结

标签: nodejs制作网站

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

上一篇:详解Node.js中的事件机制(node.js deno)

下一篇:NodeJs读取JSON文件格式化时的注意事项(nodejs读取json文件,并返回列表)

  • 个体工商户月销售额超10万怎么报税
  • 税控盘抵扣可以跨年吗
  • 投资性房地产收入计入什么科目
  • 顺丰电子发票开错了可以重新开吗
  • 企业所得税申报表在哪里查询
  • 通行费电子发票可以抵扣吗
  • 对方公司已经注销,欠钱收不回
  • 招待用烟的会计处理
  • 两个其他应收款的区别
  • 发票进项转出账务怎么做
  • 公司购买电脑费用怎么报销
  • 营改增后发票上必须要开具税收分类编码吗?
  • 承兑汇票银行背书
  • 印花税税目错了能申报更正吗
  • 农行转账支票填写样本存根怎么填
  • 个人名下车辆过户
  • 管理费用怎么记忆
  • 失控发票的账务处理
  • 公司给员工定任务合法吗
  • 制造成本包括哪几项
  • 民办非企业单位属于什么类型
  • 资产负债表年初数和期末数代表什么
  • 转正工资和试用工资区别
  • 面粉厂怎样做帐,税率是多少?
  • 期权的行权收益
  • 民营医院实收资本科目
  • 上个月多计提的工资怎么调整
  • 进项税额转出是负数是什么意思
  • Laravel 5.4中migrate报错: Specified key was too long error的解决
  • 如何恢复撤回的信息微信
  • 俄勒冈州邮编
  • 公司为什么要签劳务协议
  • php aop
  • 基于php实现简单函数
  • 金融企业财务规则(征求意见稿)
  • 购买房屋缴纳的税款
  • thinkphp3.2.3
  • 退回以前年度税费
  • 员工持股平台合伙企业
  • 公司间代收款需要开票吗
  • 一般纳税人季报还是月报
  • 一般开发票都需要什么开票信息包括了什么?
  • 融资租赁业务需要什么条件
  • 资产负债表坏账准备计入哪里科目
  • 出差的招待费应由谁承担
  • 收入总额是什么意思
  • asp连接mysql数据库
  • 年终奖可以税前扣除吗
  • 包装物押金要计入增值税吗
  • 农产品税率2020年计算
  • 当月红冲上月开具的增值税
  • 房地产开发企业会计制度
  • 信息服务的最终目的是什么
  • 返还利润含税吗
  • 招待费住宿费专票可以抵扣吗
  • 销售商品发生的销售退回属于期间费用吗
  • 累计折旧用什么账页格式
  • mysql开源社区
  • linux软件安装源
  • vista loader
  • Win7/Win8/Win10单、多系统一键安装教程 只需30秒!
  • win7系统文件夹怎么加密码
  • win10系统ie浏览器版本怎么看
  • centos打包文件
  • opengl context for format
  • 人应该掌握的基本知识
  • django框架mvt
  • vue前端后端
  • Android笔记本
  • 修改cmd中显示的用户名!
  • vue+axios登录
  • android xmlns
  • 安徽省低保查询入口官网
  • 企业所得税报错了税款扣了可以改吗
  • 农产品进项税额核定扣除
  • 甘肃税务局电子税务局app
  • 一般纳税人提供公共交通运输服务免征增值税
  • 怎样加入广东省民间文艺家协会
  • 诺诺网电子发票下载到手机
  • 税务有哪些方面
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设