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常见注意事项
Jan 01 Javascript
jquery控制listbox中项的移动并排序
Nov 12 Javascript
关于JS控制代码暂停的实现方法分享
Oct 11 Javascript
浅谈Javascript中深复制
Dec 01 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
Fullpage.js固定导航栏-实现定位导航栏
Mar 17 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
Jul 17 Javascript
Vue 创建组件的两种方法小结(必看)
Feb 23 Javascript
Vue2.X 通过AJAX动态更新数据
Jul 17 Javascript
vue实现移动端悬浮窗效果
Dec 01 Javascript
React 组件渲染和更新的实现代码示例
Feb 21 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
PHP中的日期处理方法集锦
2007/01/02 PHP
php cookis创建实现代码
2009/03/16 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
php的memcached客户端memcached
2011/06/14 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
jQuery 表单序列化实例代码
2017/06/11 jQuery
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
Vue filter介绍及其使用详解
2017/10/21 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
七匹狼男装广告词
2014/03/21 职场文书
售后客服工作职责
2014/06/16 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
浅谈Python响应式类库RxPy
2021/06/14 Python
分析Python list操作为什么会错误
2021/11/17 Python