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 相关文章推荐
Asp.Net alert弹出提示信息的几种方法总结
Jan 29 Javascript
javascript避免数字计算精度误差的方法详解
Mar 05 Javascript
jQuery获取节点和子节点文本的方法
Jul 22 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
Jul 12 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
Jun 07 Javascript
Vue.js框架路由使用方法实例详解
Aug 25 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
浅析vue深复制
Jan 29 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 Javascript
js实现从右往左匀速显示图片(无缝轮播)
Jun 29 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在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python3生成随机数实例
2014/10/20 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
python suds访问webservice服务实现
2020/06/26 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
EJB的基本架构
2016/09/22 面试题
校园招聘策划书
2014/01/09 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers