位置: 编程技术 - 正文

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

  • 在报税显示缺少发票信息
  • 个税申报显示无有效的税费种认定信息已核定
  • 企业可以申请专项债券吗
  • 建筑综合税率包含企业所得税吗
  • 跨区税源登记是指
  • 叉车维修费计什么费用
  • 购买土地契税和印花税什么时候交
  • 设计、制造
  • 公司车辆转让需要缴纳印花税吗
  • 二手车公司销售二手车的税率
  • 法人的往来款可以转为实收资本吗?
  • 房屋租赁违约金是月租金的30%还是年租金
  • 包装物一次摊销的会计分录
  • 跨年发票作废时间有限制吗
  • 承租承包经营个人所得税
  • 国税票怎么开
  • 季度所得税报表季初资产总额怎么填
  • 公司发生业务分录
  • 企业合同约定调岗不接受辞退没赔偿成立吗
  • 许可费怎么进行分类
  • 出纳记账本如何手工记账
  • 专项应付款现在叫什么
  • 应纳税所得额未减上季度所得税,下季度可补减吗
  • 资产负债应付账款怎么算
  • 所得税汇算清缴补税的会计处理
  • 管理人员预借差旅费会计分录怎么写
  • 辅助生产车间照明用电计入哪个科目
  • php正则替换字符串
  • 充值会员卡送的营销秘诀
  • 鸿蒙系统小艺怎么改声音
  • 母公司向子公司发行面值100万元、期限为三年
  • 保险中介手续费规定最新
  • 格拉纳达的阿尔罕布拉宫用什么材料制成?
  • 坏账准备属于哪一类账户
  • vue带参数跳转到详情页面
  • php使用for循环计算1到100的奇数和
  • php上传照片
  • php中实现文件上传需要用到哪几个函数
  • 叮咚你有一份好运请查收图片
  • java面试相关
  • access中宏的操作
  • mongodb基础
  • 挂预收账款怎么处理
  • 代扣职工个人应承担的社保费
  • 企业亏损了
  • 固定资产投资额怎么计算
  • 堤围防护费如何计算
  • 预缴增值税附加税需要计提吗
  • 包装物押金要计入增值税吗
  • 什么是原始凭证?简述原始凭证审核的内容
  • 生产成本如何结转
  • 办理食品经营许可证需要什么条件
  • 缴纳工会筹备金应该记什么科目
  • 购货方与付款方不一致
  • 房地产开发企业建造的商品房,在出售前
  • 年底计提利息会计分录
  • 制造费用不结转成本 报表平吗
  • mysql常用命令语句
  • windows安装kafka
  • macbookair无响应
  • win7系统如何卸载office2007
  • 如何关闭office开机自启动
  • linux用户账户管理
  • 家字取名男孩名字
  • Linux系统怎么设置窗口关闭按键在右侧
  • 创建react native项目
  • ecxel进度条
  • javascript字符串操作函数
  • jquery移动div到另一个div中
  • 苹果多点触控
  • 通过短信发送费用可能会收取运营商费用
  • js处理时间格式
  • Javascript字符串对象函数
  • jquery深拷贝
  • 安阳文峰区小学招生
  • 成都税务举报官网
  • 税控盘过了时间没清卡要罚多少钱
  • 酒店不给住怎么办
  • 个体工商户银行卡是对公还是对私
  • 中国经济行业排名
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设