Node.js 利用cheerio制作简单的网页爬虫示例


Posted in Javascript onMarch 01, 2018

本文介绍了Node.js 利用cheerio制作简单的网页爬虫示例,分享给大家,具有如下:

1. 目标

  1. 完成对网站的标题信息获取
  2. 将获取到的信息输出在一个新文件
  3. 工具: cheerio,使用npm下载npm install cheerio
  4. cheerio的API使用方法和jQuery的使用方法基本一致
  5. 如果熟练使用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}文件中`)
  })
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
教您去掉ie网页加载进度条的方法
Dec 09 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
Aug 02 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
javascript模拟地球旋转效果代码实例
Dec 02 Javascript
javascript的BOM汇总
Jul 16 Javascript
javascript表单控件实例讲解
Sep 13 Javascript
Bootstrap fileinput文件上传组件使用详解
Jun 06 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
基于js 各种排序方法和sort方法的区别(详解)
Jan 03 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
May 17 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
JQuery发送ajax请求时中文乱码问题解决
Nov 14 jQuery
vue父组件向子组件传递多个数据的实例
Mar 01 #Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
Mar 01 #Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 #Javascript
vue 实现类似淘宝星级评分的示例
Mar 01 #Javascript
vue-star评星组件开发实例
Mar 01 #Javascript
浅谈Angular 的变化检测的方法
Mar 01 #Javascript
ES6学习笔记之map、set与数组、对象的对比
Mar 01 #Javascript
You might like
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
Javascript的闭包详解
2014/12/26 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
Python日期的加减等操作的示例
2017/08/15 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
学习Django知识点分享
2019/09/11 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
如何用python反转图片,视频
2021/04/24 Python
AJAX学习笔记
2021/05/18 Javascript
Java中的随机数Random
2022/03/17 Java/Android
nginx设置资源请求目录的方式详解
2022/05/30 Servers
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang