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 相关文章推荐
用js怎么把&字符换成"&amp:"
Oct 19 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
javascript实现图片上传前台页面
Aug 18 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
Jan 17 Javascript
浅谈Vue.js
Mar 02 Javascript
ES6新特性之Symbol类型用法分析
Mar 31 Javascript
微信小程序实现根据字母选择城市功能
Aug 16 Javascript
swiper自定义分页器使用方法详解
Sep 14 Javascript
js生成word中图片处理方法
Jan 06 Javascript
vue elementUI使用tabs与导航栏联动
Jun 21 Javascript
详解elementUI中input框无法输入的问题
Apr 27 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 substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
解析PHP提交后跳转
2013/06/23 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
Three.js基础部分学习
2017/01/08 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
Python httplib模块使用实例
2015/04/11 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
Python如何实现转换URL详解
2019/07/02 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
PyQt5实现简单的计算器
2020/05/30 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
保护动物倡议书
2014/04/15 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
阿凡达观后感
2015/06/10 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python