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 call 函数的用法说明
Apr 09 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
使用jQuery监听DOM元素大小变化
Feb 24 Javascript
seajs学习之模块的依赖加载及模块API的导出
Oct 20 Javascript
js按条件生成随机json:randomjson实现方法
Apr 07 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
Jul 10 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
Sep 20 Javascript
Swiper自定义分页器使用详解
Dec 28 Javascript
浅谈Vue响应式(数组变异方法)
May 07 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 Javascript
深入了解JavaScript词法作用域
Jul 29 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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
聊天室php&mysql(四)
2006/10/09 PHP
php中chdir()函数用法实例
2014/11/13 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
详解PHP归并排序的实现
2016/10/18 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
大学生专业个人学习的自我评价
2013/10/26 职场文书
教学改革实施方案
2014/03/31 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
财务管理专业自荐书
2014/09/02 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python