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 相关文章推荐
window.location.hash 使用说明
Nov 08 Javascript
简述JavaScript对传统文档对象模型的支持
Jun 16 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
Jun 17 Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 Javascript
使用express+multer实现node中的图片上传功能
Feb 02 Javascript
小程序tab页无法传递参数的方法
Aug 03 Javascript
JQuery事件委托原理与用法实例分析
May 13 jQuery
vue实现分页的三种效果
Jun 23 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 Javascript
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
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 adodb分页实现代码
2009/03/19 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
python访问sqlserver示例
2014/02/10 Python
Python之re操作方法(详解)
2017/06/14 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python笔记之工厂模式
2019/11/20 Python
python实现FTP循环上传文件
2020/03/20 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
利用python下载scihub成文献为PDF操作
2020/07/09 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
网上蛋糕店创业计划书
2014/01/24 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
演讲比赛主持词
2015/06/29 职场文书
教师网络培训心得体会
2016/01/09 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
排查Tomcat进程假死的问题
2022/05/06 Servers