位置: 编程技术 - 正文

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

  • 多交的企业所得税怎么处理
  • 医院要交什么费用
  • 当月有进项无销项月末怎么处理
  • 事业单位人员租房有补助吗
  • 转登记小规模纳税人留抵税额
  • 折扣金额发票
  • 计算企业所得税不得扣除的项目
  • 自己生产的产品用于职工福利
  • 周转材料摊销属于什么费用
  • 资本公积转实收资本会计科目
  • 房产订金是否缴纳土地增值税?
  • 一般纳税人开6个点的票内容
  • 电费专票抵扣需要发票吗
  • 技术开发费税率13还是60
  • 企业上市过程中遇到的困难
  • 固定资产处置的账务处理
  • 购买商品成本要支付哪些成本
  • 工程物资应该计入哪里
  • 批发企业购进商品发生的进货费用可以选择下列
  • 企业取得代扣代缴个税手续费分录
  • 企业所得税固定资产折旧计算
  • 收到有误的增值税专用发票的怎么处理
  • 包装物租金怎么算
  • 营业外收入冲减销售费用
  • 企业所得税可以税前扣除的
  • php mb_convert_encoding
  • 外汇账户转账有手续费吗
  • win11系统怎么设置密码锁屏
  • 苹果手机铃声删除在哪里
  • 分期付款购买固定资产折现率怎么算
  • 员工辞退补偿金需要交个税吗
  • 无形资产摊销会影响利润吗
  • 内斯塔特点
  • 企业之间拆借资金
  • 宜搭下载
  • 前端项目部署到nginx
  • php写的代码怎么运行
  • 企业的存货按照计划成本核算,期初
  • 贷款的减值会计怎么做账
  • pytorch基本操作
  • 净现值与原始投资额现值
  • 纳税人兼营不同税率
  • 红字发票可以跨越开吗
  • 发票认证系统叫什么名字
  • 总公司和分公司按什么分类
  • 2023年终奖一次性扣税对照表
  • 民间非营利组织财务管理制度
  • 收到银行承兑汇票的账务处理
  • 税金及附加需不需要计提
  • 机动车发票红冲后重新开具
  • 逾期未认证的增值税发票处理办法
  • 所得税汇算清缴需要调增的项目
  • 成本法和权益法的转换
  • 出现事故保险公司负责协商吗
  • 税控盘清卡时间
  • 营业外支出处置固定资产损失是坏账
  • 销项负数发票怎么冲减成本
  • 代办营业执照安全可靠吗
  • mysql中数据类型为是否
  • 安装centos6.10
  • win10预览版21277
  • Windows 2000中NTFS磁盘权限应用
  • xmp文件是干嘛用的
  • window8设置在哪里
  • pgptray.exe - pgptray是什么进程 有什么用
  • win10恢复到win7系统
  • linux中使用less命令分屏查看
  • js nextSibling属性和previousSibling属性概述及使用注意
  • 批处理改ipv4地址
  • android开发基础知识
  • android课程心得体会
  • Intent传List、Map
  • python爬取教程
  • 用javascript
  • Android Design Support Library
  • jQuery Ajax页面局部加载方法汇总
  • python 异常处理方法
  • 税务局风险管理股工作总结
  • 2021年四川医保缴费截止时间
  • 在水贝买的黄金
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设