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 16 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
jquery中$each()方法的使用指南
Apr 30 Javascript
JavaScript获得指定对象大小的方法
Jul 01 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
Feb 18 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
Node.js中常规的文件操作总结
Oct 13 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
May 26 Javascript
JS实现HTML页面中动态显示当前时间完整示例
Jul 30 Javascript
package.json配置文件构成详解
Aug 27 Javascript
详解vue中多个有顺序要求的异步操作处理
Oct 29 Javascript
vue @ ~ 相对路径 路径别名设置方式
Jun 05 Vue.js
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生成静态页面详解
2006/12/05 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
PHP实现微信提现功能
2018/09/30 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python列表操作之extend和append的区别实例分析
2015/07/28 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Python实现Linux监控的方法
2019/05/16 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
python利用线程实现多任务
2020/09/18 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
个人简历自我鉴定
2013/10/11 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
党员个人总结自评
2015/02/14 职场文书
八年级物理教学反思
2016/02/19 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
MySQL 慢查询日志深入理解
2021/04/22 MySQL