Node.js 利用cheerio制作简单的网页爬虫示例
本文介绍了Node.js 利用cheerio制作简单的网页爬虫示例,分享给大家,具有如下:
1. 目标
- 完成对网站的标题信息获取
- 将获取到的信息输出在一个新文件
- 工具: cheerio,使用npm下载npm install cheerio
- cheerio的API使用方法和jQuery的使用方法基本一致
- 如果熟练使用jQuery,那么cheerio将会很快上手
2. 代码部分
介绍: 获取segment fault页面的列表标题,将获取到的标题列表编号,最终输出到pageTitle.txt文件里
const https = require('https'); const fs = require('fs'); const cheerio = require('cheerio'); const url = 'https://segmentfault.com/'; https.get(url, (res) => { let html = ''; res.on('data', (data) => { html += data; }); res.on('end', () => { getPageTitle(html); }); }).on('error', () => { console.log('获取网页信息错误'); }); function getPageTitle(html) { const $ = cheerio.load(html); let chapters = $('.news__item-title'); let data = []; let index = 0; let fileName = 'pageTitle.txt'; for (let i = 0; i < chapters.length; i++) { let chapterTitle = $(chapters[i]).find('a').text().trim(); index++; data.push(`\n${index}, ${chapterTitle}`); } fs.writeFile(fileName, data, 'utf8', (err) => { if (err) { console.log('fs文件系统创建新文件失败', err); } console.log(`已成功将获取到的标题放入新文件${fileName}文件中`) }) }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
手把手教你用Node.js爬虫爬取网站数据的方法
开始之前请先确保自己安装了Node.js环境,还没有安装的的童鞋请看一下安装教程...... https://www.jb51.net/article/113677.htm https://www.jb51.net/article/57687.htm 直接开始吧 1.在项目文件夹安装两个必须的依赖包 npm install superagent --save-dev SuperAgent(官网是这样解释的) -----SuperAgent is light-weight progressive
-
Nodejs实现爬虫抓取数据实例解析
开始之前请先确保自己安装了Node.js环境,如果没有安装,大家可以到我们下载安装. 1.在项目文件夹安装两个必须的依赖包 npm install superagent --save-dev superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下 npm install cheerio --save-dev cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速.灵活.实施的jQuery核心
-
nodejs爬虫初试superagent和cheerio
前言 早就听过爬虫,这几天开始学习nodejs,写了个爬虫https://github.com/leichangchun/node-crawlers/tree/master/superagent_cheerio_demo,爬取 博客园首页的文章标题.用户名.阅读数.推荐数和用户头像,现做个小总结. 使用到这几个点: 1.node的核心模块-- 文件系统 2.用于http请求的第三方模块 -- superagent 3.用于解析DOM的第三方模块 -- cheerio 几个模块详细的讲解及API请
-
Node批量爬取头条视频并保存方法
简介 一般批量爬取视频或者图片的套路是,使用爬虫获得文件链接集合,然后通过 writeFile 等方法逐个保存文件.然而,头条的视频,在需要爬取的 html 文件(服务端渲染输出)中,无法捕捉视频链接.视频链接是页面在客户端渲染时,通过某些 js 文件内的算法或者解密方法,根据视频的已知 key 或者 hash 值,动态计算出来并添加到 video 标签的.这也是网站的一种反爬措施. 我们在浏览这些页面时,通过审核元素,可以看到计算后的文件地址.然而在批量下载时,逐个手动的获取视频链接显然不可取
-
浅谈Node.js爬虫之网页请求模块
本文介绍了Node.js爬虫之网页请求模块,分享给大家,具体如下: 注:如您下载最新的nodegrass版本,由于部分方法已经更新,本文的例子已经不再适应,详细请查看开源地址中的例子. 一.为什么我要写这样一个模块? 源于笔者想使用Node.js写一个爬虫,虽然Node.js官方API提供的请求远程资源的方法已经非常简便,具体参考 http://nodejs.org/api/http.html 其中对于Http的请求提供了,http.get(options, callback)和http.req
-
nodeJs爬虫的技术点总结
背景 最近打算把之前看过的nodeJs相关的内容在复习下,顺便写几个爬虫来打发无聊,在爬的过程中发现一些问题,记录下以便备忘. 依赖 用到的是在网上烂大街的cheerio库来处理爬取的内容,使用superagent处理请求,log4js来记录日志. 日志配置 话不多说,直接上代码: const log4js = require('log4js'); log4js.configure({ appenders: { cheese: { type: 'dateFile', filename: 'che
-
详解Node使用Puppeteer完成一次复杂的爬虫
本文介绍了详解Node使用Puppeteer完成一次复杂的爬虫,分享给大家,具体如下: 架构图 Puppeteer架构图 Puppeteer 通过 devTools 与 browser 通信 Browser 一个可以拥有多个页面的浏览器(chroium)实例 Page 至少含有一个 Frame 的页面 Frame 至少还有一个用于执行 javascript 的执行环境,也可以拓展多个执行环境 前言 最近想要入手一台台式机,笔记本的i5在打开网页和vsc的时候有明显卡顿的情况,因此打算配1台 i7
-
Node Puppeteer图像识别实现百度指数爬虫的示例
之前看过一篇脑洞大开的文章,介绍了各个大厂的前端反爬虫技巧,但也正如此文所说,没有100%的反爬虫方法,本文介绍一种简单的方法,来绕过所有这些前端反爬虫手段. 下面的代码以百度指数为例,代码已经封装成一个百度指数爬虫node库: https://github.com/Coffcer/baidu-index-spider note: 请勿滥用爬虫给他人添麻烦 百度指数的反爬虫策略 观察百度指数的界面,指数数据是一个趋势图,当鼠标悬浮在某一天的时候,会触发两个请求,将结果显示在悬浮框里面: 按照常规
-
node实现的爬虫功能示例
本文实例讲述了node实现的爬虫功能.分享给大家供大家参考,具体如下: node是服务器端的语言,所以可以像python一样对网站进行爬取,下面就使用node对博客园进行爬取,得到其中所有的章节信息. 第一步: 建立crawl文件,然后npm init. 第二步: 建立crawl.js文件,一个简单的爬取整个页面的代码如下所示: var http = require("http"); var url = "http://www.cnblogs.com"; http.
-
Node.js 利用cheerio制作简单的网页爬虫示例
本文介绍了Node.js 利用cheerio制作简单的网页爬虫示例,分享给大家,具有如下: 1. 目标 完成对网站的标题信息获取 将获取到的信息输出在一个新文件 工具: cheerio,使用npm下载npm install cheerio cheerio的API使用方法和jQuery的使用方法基本一致 如果熟练使用jQuery,那么cheerio将会很快上手 2. 代码部分 介绍: 获取segment fault页面的列表标题,将获取到的标题列表编号,最终输出到pageTitle.txt文件里
-
Node.js利用console输出日志文件的方法示例
通常我们在写Node.js程序时,都习惯使用console.log打印日志信息,但这也仅限于控制台输出,有时候我们需要将信息输出到日志文件中,实际上利用console也可以达到这个目的的,今天就来简单介绍一下. 我们首先创建如下文件: // index.js let fs = require('fs'); let options = { flags: 'a', // append模式 encoding: 'utf8', // utf8编码 }; let stdout = fs.createWri
-
Python制作简单的网页爬虫
1.准备工作: 工欲善其事必先利其器,因此我们有必要在进行Coding前先配置一个适合我们自己的开发环境,我搭建的开发环境是: 操作系统:Ubuntu 14.04 LTS Python版本:2.7.6 代码编辑器:Sublime Text 3.0 这次的网络爬虫需求背景我打算延续DotNet开源大本营在他的那篇文章中的需求,这里就不再详解.我们只抓取某一省中所有主要城市从2015-11-22到2015-10-24的白天到夜间的所有天气情况.这里以湖北省为例. 2.实战网页爬虫: 2.1.获取城市
-
如何利用Node.js与JSON搭建简单的动态服务器
一.创建html页面 创建4个页面,index.html.register.html.sign_in.html.home.html index.html 默认主页 register.html 用于注册账号 sign_in.html 用于登录账号 home.html 用于显示登录后的页面 主要代码片段 register.html <form id="registerForm"> <div> <label for="">用户名:<
-
Node.js DES加密的简单实现
常见的加密算法基本分为这几类,1 :线性散列算法.2:对称性加密算法.3.非对称性加密算法 (记记记) 线性散列算法(签名算法):MD5,SHA1,HMAC 比如MD5:即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致. 特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别. 4.强抗碰撞:已知原数据
-
利用JavaScript实现简单的网页时钟
目录 一.效果展示 二.使用的技术 三.日期对象 1.指定时间 2.获取目前时间 三.源代码 前言: 今天带大家使用JavaScript定制一款网页时钟 一.效果展示 二.使用的技术 主要使用了js的日期对象,实现的时候先创建一个日期对象,并进行网页布局,对时间获取之后将时间填入对应的标签内.然后使用多线程实现时钟的变动. 三.日期对象 1.指定时间 代码如下: <script> //创建日期对象 d=new Date(); //设置年月日
-
Node.js利用Net模块实现多人命令行聊天室的方法
这篇文章介绍的是Node.js利用Net模块实现命令行式的多人聊天室,下面话不多说,来看看详细的介绍吧. 1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类: Server和Socket类.工厂方法. Server类如下图所示: net.Server类可以用来创建一个TCP或本地服务器,继承了EventEmitter. Socket类如下: net.Socket类一般用创建一个socket客户端或者是ne
-
node.js 利用流实现读写同步,边读边写的方法
如下所示: //10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { //先创建可读流,再创建可写流 //先读一次,rs.on(data) //将读到的类容写入目标中 ,返回布尔值,如果是ture,继续写,默认情况应该是false,暂停读取 //ws.on('drain'),抽干后,回复读取 //监听读取文件完毕后,关闭读取rs.on('end') let rs=fs.createReadSt
-
Java与Node.js利用AES加密解密出相同结果的方法示例
前言 工作中遇到nodejs端通过aes加密,安卓客户端Java解密,同样nodejs也需要解密安卓客户端加密过来的内容,发现两个加密结果不一样,查询资料发现java端需要对密钥再MD5加密一遍,以下是Java与Node.js利用AES加密解密出相同结果的方法,需要的朋友们下面来一起学习学习吧. JAVA代码如下: package g.g; import java.security.MessageDigest; import javax.crypto.Cipher; import javax.c
-
Node.js利用Express实现用户注册登陆功能(推荐)
要求 了解Express框架 了解node.js常用模块:express,body-parser,mysql 了解express Router 了解HTML form表单 了解MySQL Server 及安装使用 了解SQLyog使用 环境 OS: Win10 Node.js: v12.19.0 Express: v4.17.1 Yarn: v1.22.10 使用VScode IDE body-parser:1.19.0 mysql: 2.18.1 MySQL Server:5.7 SQLyog
随机推荐
- Angular发布1.5正式版,专注于向Angular 2的过渡
- swift MD5加密源码的实例详解
- oracle区管理和段空间管理详细介绍
- Oracle学习笔记(五)
- ASP.NET开发者使用jQuery应该了解的几件事情
- MVC+jQuery.Ajax异步实现增删改查和分页
- javascript:FF/Chrome与IE动态加载元素的区别说明
- js获取时间(本周、本季度、本月..)
- Android实现Activity之间通信的方法
- 使用优化器来提升Python程序的执行效率的教程
- 详解Python爬虫的基本写法
- C/C++中获取数组长度的方法示例
- PHP面向对象程序设计OOP继承用法入门示例
- JS下拉框内容左右移动效果的具体实现
- Java IO复用_动力节点Java学院整理
- XHTML标签的自关闭写法的坏处分析
- 如何在WinNT/2K/XP下安装纯DOS的方法
- python格式化字符串实例总结
- MySQL性能分析工具profile使用教程
- Android中资源文件(非代码部分)的使用概览