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 相关文章推荐
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
关于Javascript模块化和命名空间管理的问题说明
Dec 06 Javascript
如何确保JavaScript的执行顺序 之实战篇
Mar 03 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
Feb 07 Javascript
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
node.js中的fs.createWriteStream方法使用说明
Dec 17 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
Nov 17 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
Aug 05 Javascript
原生js实现键盘控制div移动且解决停顿问题
Dec 05 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
jQuery实现高级检索功能
May 28 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下escape解码函数的实现方法
2010/08/08 PHP
php使用百度天气接口示例
2014/04/22 PHP
PHP实现文件上传与下载
2020/08/28 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
layui导航栏实现代码
2017/05/19 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
OpenLayers3实现地图显示功能
2020/09/25 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
python实现图像拼接功能
2020/03/23 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
婚礼主持结束词
2014/03/13 职场文书
工商干部先进事迹
2014/05/14 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
工作时间证明
2015/06/15 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
Python的property属性详细讲解
2022/04/11 Python
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers