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中:input和input的区别分析
Jul 13 Javascript
页面内容排序插件jSort使用方法
Oct 10 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
详解React中的组件通信问题
Jul 31 Javascript
详谈JS中数组的迭代方法和归并方法
Aug 11 Javascript
基于vue通用表单解决方案的思考与分析
Mar 16 Javascript
webpack的 rquire.context用法实现工程自动化的方法
Feb 07 Javascript
vue动画—通过钩子函数实现半场动画操作
Aug 09 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编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP实现搜索相似图片
2015/09/22 PHP
List Installed Software Features
2007/06/11 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
研究生自荐信
2013/10/09 职场文书
物流专业大学生求职信范文
2013/10/28 职场文书
给校长的建议书600字
2014/05/15 职场文书
2015年校长新年寄语
2014/12/08 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python
Java 数据结构七大排序使用分析
2022/04/02 Java/Android