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 相关文章推荐
JSONP 跨域共享信息
Aug 16 Javascript
JQuery结合CSS操作打印样式的方法
Dec 24 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
jQuery实现简单下拉导航效果
Sep 07 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
Nov 18 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
jquery mobile开发常见问题分析
Jan 21 Javascript
浅谈addEventListener和attachEvent的区别
Jul 14 Javascript
js控制文本框禁止输入特殊字符详解
Apr 07 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
vue全局自定义指令-元素拖拽的实现代码
Apr 14 Javascript
Vue实现简单的跑马灯
May 25 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php auth_http类库进行身份效验
2009/03/19 PHP
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
Js面试算法详解
2018/04/08 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
python封装对象实现时间效果
2020/04/23 Python
pyqt5自定义信号实例解析
2018/01/31 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python打造爬虫代理池过程解析
2019/08/15 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
餐饮投资计划书
2014/04/25 职场文书
房地产推广策划方案
2014/05/19 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
2014年质检员工作总结
2014/11/18 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
大学副班长竞选稿
2015/11/21 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL