node.js实现爬虫教程


Posted in Javascript onAugust 25, 2020

一、前言

说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http、网页分析工具cherrio。 使用http直接获取url路径对应网页资源,然后使用cherrio分析。 这里我主要学习过的案例自己敲了一遍,加深理解。在coding的过程中,我第一次把jq获取后的对象直接用forEach遍历,直接报错,是因为jq没有对应的这个方法,只有js数组可以调用。

二、知识点

①:superagent抓去网页工具。我暂时未用到。
②:cherrio 网页分析工具,你可以理解其为服务端的jQuery,因为语法都一样。

效果图

1、抓取整个网页

node.js实现爬虫教程

2、分析后的数据,提供的示例为案例实现的例子。

node.js实现爬虫教程

爬虫初探源码分析

var http=require('http');
var cheerio=require('cheerio');
 
var url='http://www.imooc.com/learn/348';
 
/****************************
打印得到的数据结构
[{
 chapterTitle:'',
 videos:[{
 title:'',
 id:''
 }]
}]
********************************/
function printCourseInfo(courseData){
 courseData.forEach(function(item){
 var chapterTitle=item.chapterTitle;
 console.log(chapterTitle+'\n');
 item.videos.forEach(function(video){
 console.log(' 【'+video.id+'】'+video.title+'\n');
 })
 });
}
 
 
/*************
分析从网页里抓取到的数据
**************/
function filterChapter(html){
 var courseData=[];
 
 var $=cheerio.load(html);
 var chapters=$('.chapter');
 chapters.each(function(item){
 var chapter=$(this);
 var chapterTitle=chapter.find('strong').text(); //找到章节标题
 var videos=chapter.find('.video').children('li');
 
 var chapterData={
 chapterTitle:chapterTitle,
 videos:[]
 };
 
 videos.each(function(item){
 var video=$(this).find('.studyvideo');
 var title=video.text();
 var id=video.attr('href').split('/video')[1];
 
 chapterData.videos.push({
 title:title,
 id:id
 })
 })
 
 courseData.push(chapterData);
 });
 
 return courseData;
}
 
http.get(url,function(res){
 var html='';
 
 res.on('data',function(data){
 html+=data;
 })
 
 res.on('end',function(){
 var courseData=filterChapter(html);
 printCourseInfo(courseData);
 })
}).on('error',function(){
 console.log('获取课程数据出错');
})

参考资料:

https://github.com/alsotang/node-lessons/tree/master/lesson3

http://www.imooc.com/video/7965

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript下判断一个元素是否存在的代码
Mar 05 Javascript
Jquery replace 字符替换实现代码
Dec 02 Javascript
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
js读写(删除)Cookie实例详解
Apr 17 Javascript
css+js实现部分区域高亮可编辑遮罩层
Mar 04 Javascript
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
详解如何在vue项目中引入elementUI组件
Feb 11 Javascript
vue集成百度UEditor富文本编辑器使用教程
Sep 21 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
Apr 24 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
May 20 Javascript
ES6中如何使用Set和WeakSet
Mar 10 #Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 #Javascript
javascript实现可键盘控制的抽奖系统
Mar 10 #Javascript
基于javascript制作微信聊天面板
Aug 09 #Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 #Javascript
TypeScript Type Innference(类型判断)
Mar 10 #Javascript
JavaScript File分段上传
Mar 10 #Javascript
You might like
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
Yii使用技巧大汇总
2015/12/29 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
Javascript base64编码实现代码
2011/12/02 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
Python计算字符宽度的方法
2016/06/14 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
django跳转页面传参的实现
2020/09/17 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
优秀导游先进事迹材料
2014/01/25 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
文明班级建设方案
2014/05/15 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书