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 相关文章推荐
JavaScript 获取事件对象的注意点
Jul 29 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
Sep 02 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 Javascript
简述JavaScript的正则表达式中test()方法的使用
Jun 16 Javascript
JavaScript框架是什么?怎样才能叫做框架?
Jul 01 Javascript
javascript实现超炫的向上滑行菜单实例
Aug 03 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 jQuery
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
解决vue打包后刷新页面报错:Unexpected token
Aug 27 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
vue.js实现简单购物车功能
May 30 Javascript
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
PHP生成RSS文件类实例
2014/12/05 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
javascript 回调函数详解
2014/11/11 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
初步剖析C语言编程中的结构体
2016/01/16 Python
python实现识别相似图片小结
2016/02/22 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Python如何读取、写入CSV数据
2020/07/28 Python
上海天奕面试题笔试题
2015/04/19 面试题
网络信息管理员岗位职责
2014/01/05 职场文书
房地产项目建议书
2014/03/12 职场文书
养成教育经验材料
2014/05/26 职场文书
软件测试专业推荐信
2014/09/18 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
学校安全管理制度
2015/08/06 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python