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 相关文章推荐
XmlUtils JS操作XML工具类
Oct 01 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
JS实现下拉框的动态添加(附效果)
Apr 03 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
Dec 29 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
webpack打包js文件及部署的实现方法
Dec 18 Javascript
Vue开发实现吸顶效果的示例代码
Aug 21 Javascript
js实现动态增加文件域表单功能
Oct 22 Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 Javascript
vue实现登陆页面开发实践
May 30 Vue.js
Vue router配置与使用分析讲解
Dec 24 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
php批量删除数据
2007/01/18 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
JS图片预加载插件详解
2017/06/21 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
使用Python中的cookielib模拟登录网站
2015/04/09 Python
python求解水仙花数的方法
2015/05/11 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
资产评估专业学生的自我鉴定
2013/11/14 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
小学英语教学反思
2014/01/30 职场文书
晨会主持词
2014/03/17 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
无故旷工检讨书
2015/08/15 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript