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 相关文章推荐
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
jQuery过滤选择器详解
Jan 13 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
详解vue.js组件化开发实践
Dec 14 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
vue实现简单表格组件实例详解
Apr 16 Javascript
详解webpack介绍&安装&常用命令
Jun 29 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
JS实现选项卡效果的代码实例
May 20 Javascript
js实现简单的贪吃蛇游戏
Apr 23 Javascript
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 多进程 解决难题
2009/06/22 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
浅析PHP文件下载原理
2014/12/25 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
js 异步处理进度条
2010/04/01 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python常见数制转换实例分析
2015/05/09 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
对Python 语音识别框架详解
2018/12/24 Python
python读取与处理netcdf数据方式
2020/02/14 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
python Scrapy框架原理解析
2021/01/04 Python
网上书店创业计划书
2014/01/12 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
励志演讲稿500字
2014/08/21 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
离婚协议书样本
2015/01/26 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
土建技术员岗位职责
2015/04/11 职场文书
通知书大全
2015/04/27 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书