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 迁移目录
Dec 18 Javascript
不同的jQuery API来处理不同的浏览器事件
Dec 09 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
js 左右悬浮对联广告特效代码
Dec 12 Javascript
BootStrap智能表单demo示例详解
Jun 13 Javascript
js中string和number类型互转换技巧(分享)
Nov 28 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
Nov 10 Javascript
vue项目实战总结篇
Feb 11 Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 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
使用dump函数,给php加断点测试
2013/06/25 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
Python的缺点和劣势分析
2019/11/19 Python
python如何处理程序无法打开
2020/06/16 Python
numba提升python运行速度的实例方法
2021/01/25 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
体操比赛口号
2014/06/10 职场文书
医学求职自荐信
2014/06/21 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
党委领导班子整改方案
2014/09/30 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP
Java设计模式中的命令模式
2022/04/28 Java/Android
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers