位置: 编程技术 - 正文

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

  • 税务局退回个税会计分录
  • 借款给别的公司收到的利息会计分录怎么写
  • 附加税减免如何申报
  • 发票可不可以部分冲红
  • 小规模纳税人计税方法
  • 增值税零申报触发附加税零申报
  • 建设单位收到施工承包单位的单位工程验收申请后应组织
  • 年底结账会计处理
  • 母公司占股子公司多少
  • 合伙企业出资额不计入实收资本和资本公积 那放哪
  • 发票销项负数的会计分录怎么做?
  • 主营业务收入是营业收入吗
  • 7月1号出台的政策
  • 分公司注销时有未分配利润需要交税吗
  • 网络科技定额发票怎么做分录?
  • 房地产记账凭证
  • 应交增值税出口退税年末如何结转?
  • macos15关闭sip
  • 印花税未交罚款会怎么样
  • 评估报告怎么算合法
  • 增值税红字发票申报表怎么填
  • 个体工商户与其经营者构成共同侵权吗
  • windows缺失
  • 进项税年末需要结转么
  • 餐费专用发票怎么抵扣
  • msoobe.exe是什么
  • git可以管理二进制文件吗
  • 包装物逾期是什么意思
  • 罗卡购物村
  • 个体户缴纳生产经营所得税
  • 怎么配置tomcat服务器
  • 个人独资企业法律责任
  • pytorch with no grad
  • torch.nn.functional.interpolate()函数详解
  • 命令行修改mac地址
  • c语言的空指针
  • 代扣代缴应付职工薪酬账务处理
  • 原材料月底结转到制造费用吗
  • 税务法是否允许私人经营
  • 收入成本怎么做账
  • 金蝶利润表为什么只有累计数没有本月数
  • 固定资产变卖怎么做账务处理
  • 商家的这些行为对消费者的购买行为有什么影响
  • 报销金额大于发票怎么办
  • 红字发票的数量乘以单价可以不等于含税金额吗
  • 销售退回采购方的会计分录
  • 抵消递延所得税资产会计处理
  • 主营业务成本工资计提吗
  • 公司给员工结婚红包
  • 还账准备计提方法
  • 基本户有什么用
  • 先清卡后报税影响申报吗
  • 利润表季度申报本月金额却怎么填
  • 管理费用结转有余额吗
  • 数据库保护数据方式
  • 查看linux系统版本信息
  • fedora安装中文语言包
  • 如何查看freenass密码
  • win7系统怎么调鼠标
  • win7音频服务未响应
  • win8鼠标指针不见了
  • 龙芯芯片组
  • win7怎么查看系统位数
  • cocos2dx开发的游戏
  • nodejs创建vue
  • python的理解
  • 快速备份mysql数据库
  • JavaScript+html5 canvas实现图片破碎重组动画特效
  • javascript高级程序设计最新版
  • unity设置update间隔
  • 基于javascript的毕业设计选题
  • jquery详解
  • android数据存储与访问的方式有
  • python 汉诺塔
  • 广东税务查询系统
  • 国家税务局39号公告退税
  • 政务服务网怎么打印电子资格证书
  • 深入开展税务文化
  • 地税占税收的比例多少
  • 大排量车保险多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设