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 内存释放问题
Apr 25 Javascript
js移除事件 js绑定事件实例应用
Nov 28 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
Javascript 读取操作Sql中的Xml字段
Oct 09 Javascript
javascript求日期差的方法
Mar 02 Javascript
JavaScript中的Object对象学习教程
May 20 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
AngularJS入门教程之多视图切换用法示例
Nov 02 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 Javascript
jQuery与JavaScript节点创建方法的对比
Nov 18 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
node+multer实现图片上传的示例代码
Feb 18 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中几种常见安全设置详解
2010/04/06 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
对于Python中RawString的理解介绍
2016/07/07 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
python随机取list中的元素方法
2018/04/08 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
python实现文法左递归的消除方法
2020/05/22 Python
python怎么对数字进行过滤
2020/07/05 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
婚内房产协议书范本
2014/10/02 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
Python字符串格式化方式
2022/04/07 Python
vue判断按钮是否可以点击
2022/04/09 Vue.js
vue elementUI表格控制对应列
2022/04/13 Vue.js