位置: 编程技术 - 正文

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

  • 增值税普通发票怎么开
  • 所得税汇算清缴招待费扣除标准
  • 车船税可以免掉吗
  • 增值税的免税项目有哪些
  • 一般纳税人开劳务专票多少个点
  • 自制原始凭证和原始凭证的区别
  • 企业手续费及佣金支出
  • 将产品转为本企业使用
  • 公司购入汽车分录
  • 新会计准则要求
  • 船运费发票抵扣多少税
  • 个人开具建筑服务发票
  • 农产品销售发票能否抵扣进项税?
  • 基建人员工资计入哪个科目
  • 利润表的本期数即本月实际发生数
  • 电子发票真伪查询
  • 计划成本法如何计算材料成本差异率
  • 货物和劳务
  • 白酒消费税最低计税价格
  • 收到利息收入会计分录怎么写
  • windows defender隔离区
  • mac系统如何连接北通手柄
  • 汽车销售私下收客户红包
  • 预缴附加税款会退税吗
  • 广告公司发生的费用要计入主营业务成本吗
  • rtos有什么用
  • 购货方收到红字发票要认证吗
  • 哪些发票可以作为替代发票
  • 移动有聊天室平台吗
  • 销售费用负担的差异会计分录
  • 利息年化率怎么算化利率怎么算
  • 增值税结算方式的筹划
  • 多层是什么
  • php怎么读取txt
  • golang 和 java
  • vue企业开发实战
  • Yii2创建多界面主题(Theme)的方法
  • mysql的间隙锁与排他锁
  • 出口货物不予免、抵和退税为什么是按外销离岸价计算
  • 总分公司企业所得税如何申报缴纳
  • 简易征收预缴税款
  • 生产企业生产车间人员密度是多少
  • 债务豁免的账务处理
  • 下列行为免征增值税的有
  • 进项税额转出是借方科目还是贷方科目
  • 研发费用账务调整合同怎么写
  • 固定资产盘亏如何做账务处理
  • 进项税额转出为什么加到销项税额里
  • 收到的出口退税款需要并入利润总额吗
  • 商场联营扣点缴纳增值税税率
  • 递延所得税资产怎么计算
  • 个体注销名下的车辆需要过户吗
  • 视同销售但未收到钱怎么做账?
  • 结存成本会计分录
  • 银行扣掉的手续费怎么算
  • 什么是电子商业承兑汇票贴现
  • 其他应付款的核算范围包括应付短期租赁
  • sql常用语句大全简书
  • 苹果mac怎么下载英雄联盟
  • 如何查看winxp系统的运行内存
  • macos time machine
  • linux扩大文件系统
  • win7复制过的内容在哪
  • windows图片锁屏
  • cocos2dx官方教程
  • opengl函数
  • 在解决ul居中问题时想到的几点
  • node.js操作文件
  • python 转义字符处理
  • 有几种导航
  • 使用简单工厂模式的好处
  • Python装饰器基础详解
  • jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
  • unity中事件分发系统 EventDispatcher
  • wxpython怎么用
  • 扣税13个点实际支付金额该怎么算
  • 央企收入归谁
  • 旧房转让土地增值税扣除项目
  • 2020江苏省禁钓规定
  • 中华人民共和国道路交通安全法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设