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 15 Javascript
JS实现很实用的对联广告代码(可自适应高度)
Sep 18 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
Apr 30 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
前端图片懒加载(lazyload)的实现方法(提高用户体验)
Aug 21 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 Javascript
Vue.js实现大屏数字滚动翻转效果
Nov 29 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
Dec 31 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
Feb 15 Javascript
js实现简单的无缝轮播效果
Sep 05 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图片上传存储源码并且可以预览
2011/08/26 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
js获取class的所有元素
2013/03/28 Javascript
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
input框中的name和id的区别
2016/11/16 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
Python之str操作方法(详解)
2017/06/19 Python
Python3 Random模块代码详解
2017/12/04 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python多进程间通信代码实例
2019/09/30 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
python 实现图片裁剪小工具
2021/02/02 Python
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
自荐书模板
2013/12/15 职场文书
运动会邀请函范文
2014/02/06 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
领导离职感言
2015/08/03 职场文书
小学教师教育随笔
2015/08/14 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android