问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何学习慕课课程

发布网友 发布时间:2022-04-27 03:38

我来回答

3个回答

懂视网 时间:2022-04-24 03:59

第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行

这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让我们方便的操作HTML,就像是用jQ一样

开始前,记得

npm install cheerio

为了能够并发的进行爬取,用到了Promise对象

//接受一个url爬取整个网页,返回一个Promise对象function getPageAsync(url){return new Promise((resolve,reject)=>{
 console.log(`正在爬取${url}的内容`);
 http.get(url,function(res){
  let html = '';

  res.on('data',function(data){
  html += data;
  });

  res.on('end',function(){
  resolve(html);
  });

  res.on('error',function(err){
  reject(err);
  console.log('错误信息:' + err);
  })
 });
 })
}

在慕课网中,每个课程都有一个ID,我们事先要把想要获取课程的ID写到一个数组中,而且每个课程的地址都是一个相同的地址加上ID,所以我们只要把地址和ID拼接起来就是课程的地址

const baseUrl = 'http://www.imooc.com/learn/';
const baseNuUrl = 'http://www.imooc.com/course/AjaxCourseMembers?ids=';//获取课程的IDconst videosId = [773,371];

为了使获取每个课程内容时并发执行,要使用Promise中的all方法

Promise//当所有网页的内容爬取完毕 .all(courseArray)
 .then((pages)=>{//所有页面需要的内容let courseData = [];//遍历每个网页提取出所需要的内容pages.forEach((html)=>{
  let courses = filterChapter(html);
  courseData.push(courses);
 });//给每个courseMenners.number赋值for(let i=0;i<videosId.length;i++){for(let j=0;j<videosId.length;j++){if(courseMembers[i].id +'' == videosId[j]){
   courseData[j].number = courseMembers[i].numbers;
  }
  }
 }//对所需要的内容进行排序courseData.sort((a,b)=>{return a.number > b.number;
 });//在重新将爬取内容写入文件中前,清空文件fs.writeFileSync(outputFile,'###爬取慕课网课程信息###',(err)=>{if(err){
  console.log(err)
  }
 });
 printfData(courseData);
 });

在then方法中,pages是每个课程的HTML页面,我们还得从中提取出我们需要的信息,需要使用下面的函数

//接受一个爬取下来的网页内容,查找网页中需要的信息function filterChapter(html){
 const $ = cheerio.load(html);//所有章const chapters = $('.chapter');//课程的标题和学习人数let title = $('.hd>h2').text();
 let number = 0;//最后返回的数据//每个网页需要的内容的结构let courseData = {'title':title,'number':number,'videos':[]
 };

 chapters.each(function(item){
 let chapter = $(this);//文章标题let chapterTitle = Trim(chapter.find('strong').text(),'g');//每个章节的结构let chapterdata = {'chapterTitle':chapterTitle,'video':[]
 };//一个网页中的所有视频let videos = chapter.find('.video').children('li');
 videos.each(function(item){//视频标题let videoTitle = Trim($(this).find('a.J-media-item').text(),'g');//视频IDlet id = $(this).find('a').attr('href').split('video/')[1];
  chapterdata.video.push({'title':videoTitle,'id':id
  })
 });

 courseData.videos.push(chapterdata);

 });return courseData;
}

注意:在上面中将课程的学习人数设置为了0是因为学习课程人数是用Ajax动态获取,所以我在后面写了方法专门获取学习课程人数,其中用到的Trim()方法是去除文本中的空格

获取学习课程的人数:

//获取上课人数function getNumber(url){

 let datas = '';

 http.get(url,(res)=>{
 res.on('data',(chunk)=>{
  datas += chunk;
 });

 res.on('end',()=>{
  datas = JSON.parse(datas);
  courseMembers.push({'id':datas.data[0].id,'numbers':parseInt(datas.data[0].numbers,10)});
 });
 });
}

这样就将想获取课程的学习人数都添加到了courseMembers数组中,在最后将学习课程的人数在赋值给相对应的课程

 //给每个courseMenners.number赋值for(let i=0;i<videosId.length;i++){for(let j=0;j<videosId.length;j++){if(courseMembers[i].id +'' == videosId[j]){
   courseData[j].number = courseMembers[i].numbers;
  }
  }
 }

我们获取到了数据,就要把它按照一定的格式存到一个文件中

//写入文件function writeFile(file,string) {
 fs.appendFileSync(file,string,(err)=>{if(err){
  console.log(err);
  }
 })
}//打印信息function printfData(coursesData){

 coursesData.forEach((courseData)=>{ // console.log(`${courseData.number}人学习过${courseData.title}
`); writeFile(outputFile,`

${courseData.number}人学习过${courseData.title}

`);

 courseData.videos.forEach(function(item){
  let chapterTitle = item.chapterTitle;// console.log(chapterTitle + '
');  writeFile(outputFile,`
 ${chapterTitle}
`);

  item.video.forEach(function(item){// console.log(' 【' + item.id + '】' + item.title + '
');  writeFile(outputFile,` 【${item.id}】 ${item.title}
`);
  })
 });

 });


}

最后获取到的数据:

源码:

/**
 * Created by hp-pc on 2017/6/7 0007. */const http = require('http');
const fs = require('fs');
const cheerio = require('cheerio');
const baseUrl = 'http://www.imooc.com/learn/';
const baseNuUrl = 'http://www.imooc.com/course/AjaxCourseMembers?ids=';//获取课程的IDconst videosId = [773,371];//
输出的文件const outputFile = 'test.txt';//记录学习课程的人数let courseMembers = [];//去除字符串中的空格function Trim(str,is_global) { let result; result = str.replace(/(^s+)|(s+$)/g,"");if(is_global.toLowerCase()=="g") { result = result.replace(/s/g,""); }return result; }//接受一个url爬取整个网页,返回一个Promise对象function getPageAsync(url){return new Promise((resolve,reject)=>{ console.log(`正在爬取${url}的内容`); http.get(url,function(res){ let html = ''; res.on('data',function(data){ html += data; }); res.on('end',function(){ resolve(html); }); res.on('error',function(err){ reject(err); console.log('错误信息:' + err); }) }); }) }//接受一个爬取下来的网页内容,查找网页中需要的信息function filterChapter(html){ const $ = cheerio.load(html);//所有章const chapters = $('.chapter');//课程的标题和学习人数let title = $('.hd>h2').text(); let number = 0;//最后返回的数据//每个网页需要的内容的结构let courseData = {'title':title,'number':number,'videos':[] }; chapters.each(function(item){ let chapter = $(this);//文章标题let chapterTitle = Trim(chapter.find('strong').text(),'g');//每个章节的结构let chapterdata = {'chapterTitle':chapterTitle,'video':[] };//一个网页中的所有视频let videos = chapter.find('.video').children('li'); videos.each(function(item){//视频标题let videoTitle = Trim($(this).find('a.J-media-item').text(),'g');//视频IDlet id = $(this).find('a').attr('href').split('video/')[1]; chapterdata.video.push({'title':videoTitle,'id':id }) }); courseData.videos.push(chapterdata); });return courseData; }//获取上课人数function getNumber(url){ let datas = ''; http.get(url,(res)=>{ res.on('data',(chunk)=>{ datas += chunk; }); res.on('end',()=>{ datas = JSON.parse(datas); courseMembers.push({'id':datas.data[0].id,'numbers':parseInt(datas.data[0].numbers,10)}); }); }); }//写入文件function writeFile(file,string) { fs.appendFileSync(file,string,(err)=>{if(err){ console.log(err); } }) }//打印信息function printfData(coursesData){ coursesData.forEach((courseData)=>{ // console.log(`${courseData.number}人学习过${courseData.title} `); writeFile(outputFile,` ${courseData.number}人学习过${courseData.title} `); courseData.videos.forEach(function(item){ let chapterTitle = item.chapterTitle;// console.log(chapterTitle + ' '); writeFile(outputFile,` ${chapterTitle} `); item.video.forEach(function(item){// console.log(' 【' + item.id + '】' + item.title + ' '); writeFile(outputFile,` 【${item.id}】 ${item.title} `); }) }); }); }//所有页面爬取完后返回的Promise数组let courseArray = [];//循环所有的videosId,和baseUrl进行字符串拼接,爬取网页内容videosId.forEach((id)=>{//将爬取网页完毕后返回的Promise对象加入数组courseArray.push(getPageAsync(baseUrl + id));//获取学习的人数getNumber(baseNuUrl + id); }); Promise//当所有网页的内容爬取完毕 .all(courseArray) .then((pages)=>{//所有页面需要的内容let courseData = [];//遍历每个网页提取出所需要的内容pages.forEach((html)=>{ let courses = filterChapter(html); courseData.push(courses); });//给每个courseMenners.number赋值for(let i=0;i<videosId.length;i++){for(let j=0;j<videosId.length;j++){if(courseMembers[i].id +'' == videosId[j]){ courseData[j].number = courseMembers[i].numbers; } } }//对所需要的内容进行排序courseData.sort((a,b)=>{return a.number > b.number; });//在重新将爬取内容写入文件中前,清空文件fs.writeFileSync(outputFile,'###爬取慕课网课程信息###',(err)=>{if(err){ console.log(err) } }); printfData(courseData); });

热心网友 时间:2022-04-24 01:07

慕课多数展现形式为视频。
1、选择平台(比如国内的慕课网、学堂在线、网易公开课、人民网公开课,国外的Coursera、edX等))
2、选择需要入门的行业分类(比如人文、地理、心理等等学科,当然还有慕课网是专门为想入门编程行业的用户而设立,想学习编程开发可以关注下)
3、注册该选定平台用户((1)优先选择自己感兴趣的内容,节省时间(2)让注册更高效,防止信息被滥用)
4、点击视频学习内容(网络在线课程非常多,需要很强的自学能力。所以选择和坚持真的非常的重要)

热心网友 时间:2022-04-24 02:25

“慕课”的席卷,让各国的大学管理者看到了实实在在的危机。Coursera与edX、udacity并称为“慕课”“三驾马车”,单看Coursera,短短一年多,全球共有81所成员高校或机构加入这一联盟,共享386门课程,注册学生超过400万。
“对于各国知名高校而言,‘慕课’平台是高等教育的新*,谁都不希望失去向全世界传播知识,提升国际地位的机会。在未确定‘慕课’对高等教育是否具备*性影响的前提下,参与其中是最好的选择。”7月9日,在上海交通大学举行的在线教育发展国际论坛上,教育部科技发展中心主任李志民如是说。
何为“慕课”?在“慕课”的世界里,视频课程被切割成10分钟甚至更小的“微课程”,由许多个小问题穿插其中连贯而成,就像游戏里的通关设置,只有答对才能继续听课。不少“上瘾”的学生因此津津乐道,“你被课程内容吸引住,根本不可能开小差,一秒钟都不能。”而学生如果有疑问,可以在平台上直接提出,5分钟左右就会有师生提供解答。
“‘慕课’打破了大学的‘围墙’,未来大学将变得没有国界。”上海交通大学副校长黄震说,在线课程模式无疑将引发“学习的*”,给高等教育人才培养和教学方式带来深刻变化。在他看来,“一个最显著的变化将是,翻转课堂,从以教师为中心真正转变为以学生为中心。”而这时,如果老师还以传统的讲授、灌输式的课堂教学模式教学,学生将用“眼睛和耳朵”投票。
反思如何提高教学质量,而不是赶热闹
问题在于,“慕课”浪潮席卷之下,世界范围的名校、名师、名课“同台竞技”,中国大学如何立身?
复旦大学副校长陆昉认为,当前高等教育要解决两个问题,第一资源共享,第二学习模式。利用“慕课”的平台,可以把全球的优质课程拿过来,实现更大范围的资源共享。而大学如何运用这一模式,改变教学方法,提高教学质量,则需要更多的思考和实践。
记者在采访中发现,线上线下相结合的“混合式教学”,成为几所国内名校不约而同的探索方向。黄震告诉记者,“慕课”不同于网络公开课,互动性更强,“慕课”的出现,为教学设计提供了一种改革的可能——教师可以将在线视频作为教学的线上环节,要求学生在课堂外先“听课”,课堂内则侧重深入的分享、探讨和问题解决,真正实现“翻转课堂”。
“这一模式将促进教师对教学的反思,以及对教学模式的探索、研究,有助于推动教师角色的转变,从一个讲授者、讲解者真正变为学习的激励者、启发者,学习也将变得更加有效。”黄震介绍,从2001年开始,上海交大一直致力于在线课程建设。2006年率先建设国内首个课程中心,今年4月开通在线教育平台“南洋学堂”,打造移动课堂。
陆昉认为,现在是一个非常重要的时期,以“慕课”为契机,中国大学要冷静思考如何提高教学质量,而不是简单的赶热闹。“仅仅是在线教育,并不能解决高等教育的深层次问题,现在的小班化教育,大规模推动也遇到瓶颈。想办法把两者充分结合起来,在此基础上才能促进高等教育质量提高。留给中国高校提高教学质量的时间,已经不多。”
在线课堂,能否取代传统高等教育
“慕课”的到来,让先贤“有教无类”“得天下英才而教育之”的宏愿越来越近。不少人也为大学的命运担忧:未来,在线课堂,会否取代传统的大学课堂?找到了一条通向免费大学课堂的便捷路径,实体大学靠什么吸引学生?
黄震认为,“慕课”现阶段还不可能取代传统的高等教育,毕竟校园生活的经历、校园文化的熏陶都是在线课程难以替代的,以“慕课”冲击为契机,加快大学教学、管理的根本变革,实现两者的融合才是更好的姿态。与此同时,在这场汹涌的世界浪潮中,中国高水平大学强强联合,积极参与并且融入这场变革,方能化危为机。
就在几天前,上海交通大学宣布,将与北京大学、清华大学、复旦大学、浙江大学、南京大学、中国科学技术大学、哈尔滨工业大学、西安交通大学等高校及同济大学、大连理工大学、重庆大学共建中文“慕课”平台。12所高校将建立若干高水平在线课程平台,实现在线优质课程共享,率先“试水”中国教学模式改革,率先探索跨校联合辅修专业培养模式,探索和实施“在线开放课程”资源向社会开放。
一些专家也指出,从1980年代开始,美国大学就一直在热烈探讨,计算机和互联网会不会造成大学基本形态的危机。在美国,“慕课”之热,背后有互联网资本力量的驱动,也是美国大学引领全球高等教育的一种表现。
“这将是一场学习的*,其影响绝不限于大学,对推动继续教育发展,打造灵活开放的终身教育体系,构建人人皆学、处处可学、时时能学的学习型社会,也将具有积极意义。”张杰说,“中国大学应以在线教育发展为契机,重新思考自身的使命与责任。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 电脑怎么设置碎片整理 慕课堂用微信扫码加入的后果 电脑里的磁盘碎片整理,是什么意思,使用这个功能对电脑有影响吗? 慕课堂认证码是啥 慕课怎么输入课堂码? 电脑的碎片整理中全部分析和全部优化的区别? 怎样自制冰激淋? 国有土地使用权商业用房拆迁补偿标准 魅族手机静音振动的情况下 为什么qq 微信来消息 不震动也没有声音 商业拆迁会怎么进行补偿? 为什么魅族16微信提示音只能用系统的,怎么没法用微信本身的提示音? 魅族手机为何微信语音没声音? 商业用地拆迁标准 商业用地拆迁赔偿标准 商业用地征地补偿标准 华为手机自动对齐功能再哪里 晚上不生产情况下,喷涂烟囱里废气在线监测超标是怎么回事? 儿子两岁把喷油烟机的喷眼里了眼睛里都是红色怎么办 硬中华 烟草喷码,有喷这里的么 氯丁橡胶的行业研究 电脑版微信如何打开慕课堂? 怎么使用QQ一键登录进慕课堂? 康佳电视怎样才能和手机多屏互动 如何进入慕课程班级? 怎样使用康佳电视的多屏互动软件? 大学选修慕课怎么上? 如何加入慕课学习课程? 怎样使用康佳电视的多屏互动 我之前在中国大学mooc上用手机号注册了一个账号然后前几天上课的时候用慕课堂没注意就直接用微信账号? 我用的是手机账号登录的,但是用的微信登录的慕课堂,未认证怎么办? 慕课堂和中国大学MOOC是一个东西吗? 支付宝余额宝体验金为什么我跟别人不同,我朋友扫出2万他得3万,是1.5倍。我扫出2万就是2万 如何用simple piano 接软键盘 硬电话线和软电话线怎样接 向电工朋友请教,软连接线和铜电缆怎么连接? 程序员如何才能接到软件外包项目呢? 家里自来水阀门怎样上软连接对丝? 电接点压力表怎么接软启动器 怎么接软件开发的小项目? 钢结构与基础怎么软连接连接?