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 相关文章推荐
ext读取两种结构的xml的代码
Nov 05 Javascript
JQuery 国际象棋棋盘 实现代码
Jun 26 Javascript
JS打开新窗口的2种方式
Apr 18 Javascript
jquery将一个表单序列化为一个对象的方法
Dec 02 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
jQuery向webApi提交post json数据
Jan 16 Javascript
js/jq仿window文件夹框选操作插件
Mar 08 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
vue实现搜索功能
May 28 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 jQuery
TS 类型收窄教程示例详解
Sep 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
一个取得文件扩展名的函数
2006/10/09 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
js代码实现轮播图
2020/05/04 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
python使用多进程的实例详解
2018/09/19 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
户外活动总结范文
2014/04/30 职场文书
加班费申请报告
2015/05/15 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL