node实现的爬虫功能示例


Posted in Javascript onMay 04, 2018

本文实例讲述了node实现的爬虫功能。分享给大家供大家参考,具体如下:

node是服务器端的语言,所以可以像python一样对网站进行爬取,下面就使用node对博客园进行爬取,得到其中所有的章节信息。

第一步: 建立crawl文件,然后npm init。

第二步: 建立crawl.js文件,一个简单的爬取整个页面的代码如下所示:

var http = require("http");
var url = "http://www.cnblogs.com";
http.get(url, function (res) {
  var html = "";
  res.on("data", function (data) {
    html += data;
  });
  res.on("end", function () {
    console.log(html);
  });
}).on("error", function () {
  console.log("获取课程结果错误!");
});

即引入http模块,然后利用http对象的get请求,即一旦运行,相当于node服务器端发送了一个get请求请求这个页面,然后通过res返回,其中on绑定data事件用来不断地接受数据,最后end时我们就在后台打印出来。

这只是整个页面的一部分,我们可以在此页面审查元素,发现确实是一样的

我们只需要将其中的章节title和每一小节的信息爬到即可。

第三步: 引入cheerio模块,如下:(在gitbash中安装即可,cmd总是出问题)

cnpm install cheerio --save-dev

这个模块的引入,就是为了方便我们操作dom,就像jQuery一样。

第四步: 操作dom,获取有用信息。

var http = require("http");
var cheerio = require("cheerio");
var url = "http://www.cnblogs.com";
function filterData(html) {
  var $ = cheerio.load(html); 
  var items = $(".post_item");
  var result = [];
  items.each(function (item) {
    var tit = $(this).find(".titlelnk").text();
    var aut = $(this).find(".lightblue").text();
    var one = {
      title: tit,
      author: aut
    };
    result.push(one);
  });
  return result;
}
function printInfos(allInfos) {
  allInfos.forEach(function (item) {
    console.log("文章题目 " + item["title"] + '\n' + "文章作者 " + item["author"] + '\n'+ '\n');
  });
}
http.get(url, function (res) {
  var html = "";
  res.on("data", function (data) {
    html += data;
  });
  res.on("end", function (data) {
    var allInfos = filterData(html);
    printInfos(allInfos);
  });
}).on("error", function () {
  console.log("爬取博客园首页失败")
});

即上面的过程就是在爬取博客的题目和作者。

最终后台输出如下:

node实现的爬虫功能示例

这和博客园首页的内容是一致的:

node实现的爬虫功能示例

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
插件:检测javascript的内存泄漏
Mar 04 Javascript
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
JavaScript学习笔记之基础语法
Jan 22 Javascript
JS实现文字向下滚动完整实例
Feb 06 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
May 16 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
Apr 25 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
详解Jest结合Vue-test-utils使用的初步实践
Jun 27 Javascript
基于jQuery.i18n实现web前端的国际化
May 04 #jQuery
JavaScript实现百度搜索框效果
Mar 26 #Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
May 04 #Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
May 04 #Javascript
JS模拟实现哈希表及应用详解
May 04 #Javascript
vue地区选择组件教程详解
May 04 #Javascript
Vue 按键修饰符处理事件的方法
May 04 #Javascript
You might like
一个典型的PHP分页实例代码分享
2011/07/28 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
Python 如何对文件目录操作
2020/07/10 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
2014年人大工作总结
2014/12/10 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
浅谈Python数学建模之线性规划
2021/06/23 Python
Java Socket实现多人聊天系统
2021/07/15 Java/Android
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技