node实现爬虫的几种简易方式


Posted in Javascript onAugust 22, 2019

说到爬虫大家可能会觉得很NB的东西,可以爬小电影,羞羞图,没错就是这样的。在node爬虫方面,我也是个新人,这篇文章主要是给大家分享几种实现node

爬虫的方式。第一种方式,采用node,js中的 superagent+request + cheerio。cheerio是必须的,它相当于node版的jQuery,用过jQuery的同学会非常容易上手。它

主要是用来获取抓取到的页面元素和其中的数据信息。superagent是node里一个非常方便的、轻量的、渐进式的第三方客户端请求代理模块,用他来请求目标页面。

node中,http模块也可作为客户端使用(发送请求),第三方模块request对其使用方法进行了封装,操作更方便。以下是三者的引入方法:

node实现爬虫的几种简易方式

接下来我们开始请求要爬取的目标页面。申明目标页面比如新浪网首页:

node实现爬虫的几种简易方式

如新浪首页部分代码

node实现爬虫的几种简易方式

通过superagent请求目标网站,获取到网站内容,通过cheerio.load方法引入要解析的html
cheerio中的有关DOM操作的方式

node实现爬虫的几种简易方式

此处采用 .each(function(index,element){...})方式遍历需要的元素

node实现爬虫的几种简易方式

返回结果如下:

node实现爬虫的几种简易方式

若要将文字内容存储可采用以下方式:

引入fs模块const fs= require("fs")

引入path模块 const path=require("path")

Node.js 内置的fs模块就是文件系统模块,负责读写文件。和所有其他JS模块不同的是,fs模块同时提供了异步和同步的方法。

在上述方法中调用存储文字内容mkdirs方法

//存放数据
mkdirs('./content2',saveContent); (注: content2是新建文件名;saveContent是回调函数)

node实现爬虫的几种简易方式

文字内容最终将存储在content2中的content.txt文件中

若想存储图片可采用以下方式:

node实现爬虫的几种简易方式

第二种方式: 使用Nightmare自动化测试工具。

这里介绍一下nightmare工具的用途:

Electron可以让你使用纯JavaScript调用Chrome丰富的原生的接口来创造桌面应用。你可以把它看作一个专注于桌面应用的Node.js的变体,而不是Web服务器。

其基于浏览器的应用方式可以极方便的做各种响应式的交互

Nightmare是一个基于Electron的框架,针对Web自动化测试和爬虫,因为其具有跟PlantomJS一样的自动化测试的功能可以在页面上模拟用户的行为触发一些异步数据加载,

也可以跟Request库一样直接访问URL来抓取数据,并且可以设置页面的延迟时间,所以无论是手动触发脚本还是行为触发脚本都是轻而易举的。

const Nightmare=require("nightmare") //自动化测试包 ,处理动态页面
const nightmare=Nightmare({show: true}) show:true时,运行node可以显示内置模拟浏览器

node实现爬虫的几种简易方式

运行结束后,会在image2中存储下载的图片。

好了,文章就到这里了,有什么问题欢迎小伙伴指正。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
JQuery标签页效果实例详解
Dec 24 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
深入浅析Node环境和浏览器的区别
Aug 14 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
May 18 Javascript
JS学习笔记之闭包小案例分析
May 29 Javascript
jQuery+ThinkPHP实现图片上传
Jul 23 jQuery
vue router动态路由设置参数可选问题
Aug 21 #Javascript
Element ui 下拉多选时新增一个选择所有的选项
Aug 21 #Javascript
js时间转换毫秒的实例代码
Aug 21 #Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 #Javascript
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 #jQuery
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 #Javascript
Vue仿微信app页面跳转动画效果
Aug 21 #Javascript
You might like
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
php调整服务器时间的方法
2015/04/03 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
浅谈Python的异常处理
2016/06/19 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
详解python中list的使用
2019/03/15 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
商务助理岗位职责
2013/11/13 职场文书
大学四年规划书范文
2013/12/27 职场文书
运动会入场词60字
2014/02/15 职场文书
期终自我鉴定
2014/02/17 职场文书
大三学习计划书范文
2014/05/02 职场文书
学雷锋标语
2014/06/25 职场文书
关于环保的活动方案
2014/08/25 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
pytorch--之halfTensor的使用详解
2021/05/24 Python
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android