node爬虫的几种简易实现方式
说到爬虫大家可能会觉得很NB的东西,可以爬小电影,羞羞图,没错就是这样的。在node爬虫方面,我也是个新人,这篇文章主要是给大家分享几种实现node
爬虫的方式。第一种方式,采用node,js中的 superagent+request + cheerio。cheerio是必须的,它相当于node版的jQuery,用过jQuery的同学会非常容易上手。它
主要是用来获取抓取到的页面元素和其中的数据信息。superagent是node里一个非常方便的、轻量的、渐进式的第三方客户端请求代理模块,用他来请求目标页面。
node中,http模块也可作为客户端使用(发送请求),第三方模块request对其使用方法进行了封装,操作更方便。以下是三者的引入方法:

接下来我们开始请求要爬取的目标页面。申明目标页面比如新浪网首页:

如新浪首页部分代码

通过superagent请求目标网站,获取到网站内容,通过cheerio.load方法引入要解析的html
cheerio中的有关DOM操作的方式
此处采用 .each(function(index,element){...})方式遍历需要的元素
返回结果如下:

若要将文字内容存储可采用以下方式:
引入fs模块 const fs= require("fs")
引入path模块 const path=require("path")
Node.js 内置的fs模块就是文件系统模块,负责读写文件。和所有其他JS模块不同的是,fs模块同时提供了异步和同步的方法。
在上述方法中调用存储文字内容mkdirs方法
//存放数据
mkdirs('./content2',saveContent); (注: content2是新建文件名;saveContent是回调函数)

文字内容最终将存储在content2中的content.txt文件中
若想存储图片可采用以下方式:

第二种方式: 使用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可以显示内置模拟浏览器

运行结束后,会在image2中存储下载的图片。
好了,文章就到这里了,有什么问题欢迎小伙伴指正。
node爬虫的几种简易实现方式的更多相关文章
- Python爬虫的三种数据解析方式
数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...
- 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ
前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...
- node爬虫 -- 网页图片
相信大家都听说过爬虫,我们也听说过Python是可以很方便地爬取网络上的图片,但是奈何本人不会Python,就只有通过 Node 来实践一下了. 接下来看我如何 板砖 ! !!
- HTML5 Web 客户端五种离线存储方式汇总
最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于HT for Web写了个综合的实例,分别利用了Cookie.WebStorage.IndexedDB以及Fi ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)
主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析
最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转载)
原文地址: http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 原文地址: http://www.trinea.cn ...
- 【转】ArrayList和LinkedList的几种循环遍历方式及性能对比分析
原文网址:http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 主要介绍ArrayList和LinkedList这两种 ...
- Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 [ 转载 ]
Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 @author Trinea 原文链接:http://www.trinea.cn/android/arrayl ...
随机推荐
- NOIP2018初赛题解 提高组
- CVE-2018-4407 漏洞复现POC
pip install scapy import scapy from scapy.all import * send(IP(dst="192.168.1.132",options ...
- python面向过程编程 - ATM
前面程序整合加自定义日志 1.文件摆放 ├── xxxx │ ├── src.py │ └── fil_mode.py │ └── data_time.py │ └── loading.py │ └─ ...
- [HNOI2015]亚瑟王[期望DP]
也许更好的阅读体验 \(\mathcal{Description}\) 给出\(n\)个技能,每个技能按输入顺序有\(p[i]\)的概率释放并造成\(d[i]\)的伤害.每轮游戏从前往后顺序查看每个技 ...
- idea 警告:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
在pom.xml文件中添加 <properties> <maven.compiler.source>1.8</maven.compiler.source& ...
- nginx目录穿越漏洞复现
nginx目录穿越漏洞复现 一.漏洞描述 Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添加如下配置 在如 ...
- Ansible CMDB
Ansible CMDB CMDBAnsible-CMDB CMDB 文章目录 1. 简介 2. 安装 2.1. 1. 安装 ansible 2.2. 2. 下载并安装 ansible-cmdb 3. ...
- ThreadPoolExecutor带来的性能问题
使用线程池,一般情况下会带来性能提升,并且使用线程池管理线程,减少了每个任务调用的开销,通常可以在执行大量异步任务时提供增强的性能. 但是在高并发的情况下,会因为使用不当导致性能下降,并且下降得比较严 ...
- Spring Cloud 之 Gateway.
一.Gateway 和 Zuul 的区别 Zuul 基于servlet 2.5 (works with 3.x),使用阻塞API.它不支持任何长期的连接,如websocket. Gateway建立在S ...
- PyCharm字体大小调整
1.点击左上角File----settings----keymap----------搜索increase,选中,increase font size--------再选择enter mouse sh ...