位置: 编程技术 - 正文

利用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文件,并返回列表)

  • 增值税留抵税额退税账务处理
  • 新公司成立后的第一个文件是什么
  • 公司注销,账务怎么处理
  • 聘用退休员工
  • 其他应付款长期挂账违反什么规定
  • 企业在什么情况下辞退员工不需要补偿
  • 税控系统技术维护费抵税怎么申报
  • 加工费发票可以不开数量吗
  • 耕地占用税为什么属于房地产开发成本
  • 税金及附加里面有印花税吗
  • 专票上的账号和收款账号要一致吗
  • 专票的有效期是什么意思
  • 个人之间的房屋抵押需要去房管局做登记吗
  • 企业税收风险有哪些方面
  • 工业企业该怎样建账?
  • 营改增的纳税人
  • 企业所缴税款能抵税吗
  • 地铁充值发票能报销吗
  • 升级打装备的手游
  • 高新技术企业的税收优惠政策
  • 有什么办法可以快速减肥
  • linux swap 0
  • uniapp自定义下拉刷新上拉加载
  • php的面向对象
  • php文件怎么打开运行
  • 企业所得税核定征收方法有哪两种
  • 退款会退货吗
  • 会计分录怎么分借方和贷方
  • 注册资本认缴可以增加吗
  • gps定位器怎么开启
  • 微信小程序详细教程
  • Vue 3 介绍
  • 基于什么意思
  • 毕业设计基于Linux系统的NFS服务器搭建
  • php公众号推送完整示例
  • php给图片加水印
  • php代码自动生成
  • php密码加密技术phpass
  • 不得从销项税额中抵扣的是
  • 支付国外佣金需要开票吗
  • 海关缴款书当月能查到吗
  • 培训机构先收费后付费
  • 农业合作社需要纳税吗
  • 企业年报分析的内容包括哪些方面
  • 暂估入库有风险吗
  • 抵账的多余款是什么科目
  • 2022年最新装修风格
  • mysql无法连接到服务器
  • 节能控制模块
  • 应付职工薪酬中的职工是指
  • 贷款的利息可以不还吗
  • 税务系统重置密码
  • 印花税购销合同改为买卖合同
  • 物资采购是
  • 实收资本期末需要结转吗
  • 异地设立分公司怎么办理?
  • 月末在产品生产成本会计分录
  • 未认证进项税额会计分录
  • 内账收入如何确认
  • 未使用和未投入使用
  • 暂估未取得发票汇缴纳税调增怎么填
  • 免抵退退税额
  • 财务软件摊销年限的最新规定
  • 明细分类账表格
  • windowssystem32oobe找不到指定的路径
  • alpine安装apt
  • 华硕笔记本电脑官网
  • vcpkgsrv.exe是什么进程
  • win7开机过程中黑屏
  • winxp教程
  • macbookpro客人用户
  • 怎么隐藏不让别人发现
  • win7系统安装软件权限设置
  • win7系统自动注销重启
  • linux搭建chia
  • 微信小程序获取手机号失败
  • python的threadpool
  • 如何在同一台电脑上投屏
  • 采购设备税率多少
  • 烟台税务查询系统网址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设