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 相关文章推荐
jQuery遍历Form示例代码
Sep 03 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
jQuery实现可编辑的表格实例讲解(2)
Sep 17 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
实例详解JSON取值(key是中文或者数字)方式
Aug 24 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
Aug 25 Javascript
vue和better-scroll实现列表左右联动效果详解
Apr 29 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
Sep 10 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 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
php win下Socket方式发邮件类
2009/08/21 PHP
php 文件缓存函数
2011/10/08 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
10款最好的Web开发的 Python 框架
2015/03/18 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python中str.format()详解
2017/03/12 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
Django权限设置及验证方式
2020/05/13 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
资产经营总监岗位职责范文
2013/12/01 职场文书
丑小鸭教学反思
2014/02/03 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
销售员自我评价
2015/03/11 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
毕业生政审意见范文
2015/06/04 职场文书
大学班长竞选稿
2015/11/20 职场文书