位置: 编程技术 - 正文

利用node.js爬取指定排名网站的JS引用库详解(node爬取数据)

编辑:rootadmin

推荐整理分享利用node.js爬取指定排名网站的JS引用库详解(node爬取数据),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js爬虫教程,nodejs爬虫框架crawler,node网络爬虫,nodejs爬虫框架crawler,node python 爬虫,node网络爬虫,nodejs爬取数据,nodejs爬取数据,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

本文给大家介绍的爬虫将从网站爬取排名前几的网站,具体前几名可以具体设置,并分别爬取他们的主页,检查是否引用特定库。下面话不多说了,来一起看看详细的介绍:

所用到的node主要模块

express 不用多说 request http模块 cheerio 运行在服务器端的jQuery node-inspector node调试模块 node-dev 修改文件后自动重启app

关于调试Node

在任意一个文件夹,执行node-inspector,通过打开特定页面,在页面上进行调试,然后运行app,使用node-dev app.js来自动重启应用。

所碰到的问题

1. request请求多个页面

由于请求是异步执行的,和分别返回3个页面的数据,这里只爬取了个网站,一个页面有个,所以有3页,通过循环里套request请求,来实现。

通过添加请求头可以实现基本的反爬虫

处理数据的方法都写在analyData()里面,造成后面的数据重复存储了,想了很久,才想到一个解决方法,后面会写到是怎么解决的。

2. 多层回调

仔细观察代码,你会发现,处理数据的方法使用了如下的多层回调,也可以不使用回调,写在一个函数内部;因为,每层都要使用上一层的数据,造成了这样的写法。

利用node.js爬取指定排名网站的JS引用库详解(node爬取数据)

3. 正则获取JS库

由于获取页面库,首先需要获取到script的src属性,然后通过正则来实现字符串匹配。

获取到的script可能是上面这样的,由于库名的命名真是各种各样,后来想了一下,因为文件名是用.js结尾的,所以就以点号为结尾,然后把点号之前的字符截取下来,这样获得了库名,代码如下。

4.cheerio模块获取JS引用链接

这部分也花了一点时间,才搞定,cheerio获取DOM的方法和jQuery是一样的,需要对返回的DOM对象进行查看,就可以看到对象里隐藏好深的href属性,方法大同小异,你也可以使用其他选择器,选择到script标签

5.存储数据到数据库

存储数据的逻辑是先获取所有的script信息,然后push到一个缓存数组,由于push后面,紧跟着存储到数据库的方法,这两个方法都写在循环里面的,例如爬取5个网站,每个网站存储一次,后面也会跟着存储,造成数据重复存储。解决方法是存储数据的一般逻辑是先查,再存,这个查比较重要,查询的方法也有多种,这里主要是根据库名来查找唯一的数据对象,使用findOne方法。注意,由于node.js是异步执行的,这里的闭包,每次只传一个i值进去,执行存储的操作。

6.分页插件

本爬虫前端使用了bootstrap.paginator插件,主要是前台分页,返回数据,根据点击的页数,来显示对应的数据,后期考虑使用AJAX请求的方式来实现翻页的效果,这里的注意项,主要是最后一页的显示,最好前面做个判断,因为返回的数据,不一定刚好是页数的整数倍

完整代码

1. 前端

2.后端路由

源码下载

github下载地址 (本地下载)

后记

通过这个小爬虫,学习到很多知识,例如爬虫的反爬虫有哪些策越,意识到node.js的异步执行特性,前后端是怎么进行交互的。同时,也意识到有一些方面的不足,后面还需要继续改进,欢迎大家的相互交流。

好了,

标签: node爬取数据

本文链接地址:https://www.jiuchutong.com/biancheng/380900.html 转载请保留说明!

上一篇:NodeJS使用七牛云存储上传文件的方法(七牛云和ucloud)

下一篇:深入解析nodejs HTTP服务(深入解析windows第7版pdf)

  • 烟叶税怎样计算
  • 怎样注册投资有限公司
  • 向银行借款产生的利息
  • 应收账款余额不对怎么调账
  • 预计净残值的计算公式为
  • 从价计征房产税怎么算 原值和出租房原值
  • 发票上盖了老税号怎么办
  • 增值税发票没了能补开吗
  • 普通发票有没有有效期
  • 车船税不开发票怎么做账?
  • 进项税额转出补交税金会计分录
  • 事业单位发生管理费用
  • 重复缴税怎么做账
  • 买体育彩票收银配比是多少
  • 施工单位企业税率是多少
  • 发票的单价开得太低了怎么办?
  • 增值税专票盖章盖在哪里
  • 水土保持补偿费收费标准
  • 红冲发票地址不一样可以吗
  • 企业所得税申报表在哪里打印
  • 企业支付宝可以转账到对公账户吗
  • 劳务派遣用工工资标准
  • 存货损失的账务处理
  • 异地取款还有手续费吗
  • 损益类账户包括成本类吗
  • 企业贷款利息是否可以提前还款
  • 房产增值税包含个税吗
  • 公司面临清算,外包企业的员工怎么处理?
  • 差额征税的服务费怎么入账
  • ios路由设计
  • 定期存款是否属于受限资金
  • 金融服务的手续费要交税吗
  • Windows11更新后无法联网
  • 王者荣耀中哪吒的图片
  • 支付代账公司费用 怎么写凭证
  • linux系统中查看磁盘空间情况命令
  • 哪些发票可以作为替代发票
  • springboot+vue+elementsUI 实现分角色注册登录界面
  • 会计账簿的登记
  • 机动处置什么意思
  • 新注册的外贸公司花名册
  • antd-vue-pro
  • 葡萄酒企业已纳税多少
  • 社保包括哪些保险及比例
  • javascript生成器
  • php序列化和反序列化函数
  • 使用灭火器时要对准火焰的什么部位喷射
  • 进入微信小程序
  • ftp port命令
  • 企业计提的医疗保险属于企业设定提存计划的内容
  • 每个月工资扣的税为什么不一样
  • 公司车辆固定资产转移税
  • PYTHON中使用什么符号表示单行注释
  • 福利费要分部门吗
  • 职工给单位造成损失可以申请仲裁吗
  • 自用房地产转换为采用成本模式计量的投资性房地产
  • 商贸公司经营范围可以写烟酒吗
  • 法院退诉讼费账务处理
  • 抵押贷款评估费自己出吗
  • 研发支出费用化支出期末有余额吗
  • 公司中标
  • 商业汇票的会计科目是什么
  • 进口增值税与关税的关系
  • 进口形式发票能证明商品是进口的吗
  • 发票专用章盖在中间行不行
  • 金税盘未清盘怎么处理
  • 一般要做代理,授权书有什么用
  • 内存不够用如何升级系统
  • Ubuntu系统怎么截图
  • win10打开ie8
  • mac鼠标如何设置
  • android 游戏平台
  • shell数组遍历
  • js控制display属性
  • 个体工商户税务年报网上怎么申报
  • 重庆市劳动监察大队官网
  • 开税票锁机怎么办
  • 电子税务局帐号不知道怎么找
  • 税务申报如何网上申报
  • 注册会计师人员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设