位置: 编程技术 - 正文

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

  • 税筹是什么意思,有哪些工具
  • 委托加工物资的会计科目
  • 处置无形资产属于经营活动吗
  • 盈余公积是否必要交税
  • 应付福利费直接计入未分配利润
  • 交通补贴和通讯补贴怎么发合理
  • 出口退税会计处理全部流程
  • 进项与销项不符怎么办
  • 建设工程中税费如何承担
  • 资本公积是啥
  • 企业个人补偿款需要缴税吗?
  • 过了认证期的发票怎么办
  • 税务局锁了开票系统票已领出还可以开出来吗
  • 航天信息300元是什么费用
  • 公司购买环保材料会计分录
  • 购买健身器材需要注意什么
  • 生产企业出口退税操作流程视频
  • 公司为员工交的五险一金到底是怎么回事
  • 十分钟看懂财务报表
  • 1697508131
  • 以前年度未申报的专项附加扣除
  • 季度企业所得税可以弥补以前年度亏损吗
  • 暂估入库入库单范本
  • 银行保证金账务处理流程
  • 盈余 盈利
  • 原材料的运费计入什么科目
  • 月入2万的10个小生意低成本
  • 临时工的工资需要缴纳工会经费吗
  • 原始凭证和审计证据的关系
  • php imap函数
  • 华沙的教堂
  • 企业所得税如何计算应纳税所得额
  • 注销小规模公司需要什么材料
  • 技术服务费可以计入成本吗
  • php生成随机字母数字代码
  • 梅尔加足球俱乐部
  • php curl_exec
  • 为什么很多银行卡会被异地警方冻结
  • 小规模纳税人季度不超30万免增值税
  • 强化学习之stable_baseline3详细说明和各项功能的使用
  • 订单超时十分钟
  • 研发支出的相关理论基础有哪些
  • 不动产物权归属和内容的根据是什么?
  • 担保贷款借款人征信不好有影响吗
  • 预付工程款如何结算
  • css设置旋转动画
  • 合伙开网吧需要什么手续
  • 资产负债表中没有专项储备怎么填写
  • 外购产品捐赠
  • 即征即退增值税怎么申报
  • 计提个税和缴纳个税金额不符的原因
  • 计提工会经费如何划入工会专户
  • 递延收益是什么负债
  • 发票已认证次月退回
  • 原材料存货跌价准备
  • 用友反结账怎么操作
  • 物业公司收到维修基金会计分录
  • 利润分配明细科目有哪些
  • 承租人和共同承租人
  • 在建工程预付款授信
  • 在长期股权投资中,如何理解控制、重大影响?
  • sqlserver 附加数据库 只读
  • 64位win7怎么释放为硬件保留的内存?
  • 在Vista、Windows7下玩英雄无敌3绿色版
  • 如何安装vista
  • mac osx 10.12
  • centos6.8安装不上
  • win7任务管理器快捷键ctrl+alt+
  • ubuntu zmq
  • 电脑没有声音怎么恢复按哪个键
  • w10系统音频怎么设置
  • jquery禁止点击事件
  • Android 中的 TableLayout 继承自
  • js类继承的几种方式
  • jquery validate表单内容怎么添加边框
  • shell编程入门
  • [置顶]星陨计划
  • js模块化框架
  • jquery跳出方法
  • 税务局打印发票的软件是哪个
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设