node爬虫 - imooc

var http = require(‘http‘);
var cheerio = require(‘cheerio‘);
var url = ‘http://www.imooc.com/learn/348‘;

// 过滤章节信息
function filterChapters(html) {
    var $ = cheerio.load(html);
    var chapters = $(".chapter"); //.chapter和课程有关的最外层
    var courseData = [];    //课程信息

    chapters.each(function(index, item) {    //遍历5个大章节
        var chapter = $(item);
        var chapterTitle = chapter.find(‘strong‘).text();
        var chapterItem = chapter.find(‘li‘);
        var chaperData = {
            ‘title‘: chapterTitle,
            ‘videos‘: []
        }
        chapterItem.each(function(index, item) {    //遍历每大章下面的小章节
            var video = $(item);
            var videoTitle = video.find(‘.studyvideo‘).text();

            var videoId = video.find(‘.studyvideo‘).attr(‘href‘).split(‘video/‘)[1];

            chaperData.videos.push({
                ‘title‘: videoTitle,
                ‘id‘: videoId
            });
        });
        courseData.push(chaperData);
    });

    return courseData;

}
// 显示课程信息
function printCourseInfo(course) {
    course.forEach(function(element) {
        var chapterTitle = element.title;
        console.log(chapterTitle + ‘\n‘);
        element.videos.forEach(function(video) {
            console.log(‘【‘ + video.id + ‘】‘ + video.title.trim()+ ‘\n‘);
        });
    });
}

http.get(url, function(response) {
    var html = ‘‘;
    response.on(‘data‘, function(data) {
        html += data;
    });
    response.on(‘end‘, function() {
        var courseArr = filterChapters(html);
        printCourseInfo(courseArr);
    });
}).on(‘error‘, function() {
    console.log(‘获取课程错误‘);
});

console.log(‘crawling..‘);

感谢scott老师带来的精彩教学,这是http小爬虫的事例代码

时间: 2024-10-14 11:34:38

node爬虫 - imooc的相关文章

node爬虫解决网页编码为gb2312结果为乱码的方法

最近需要对某消防网站进行宣传力度区域进行统计,使用一般采用的http模块进行数据抓取的时候发现结果是乱码,翻看原网站才发现,该消防网站是gb2312的编码,而http模块爬出的数据不能进行gbk解析,因此本片文章主要为解决用node对网站编码为gb2312爬虫时得到乱码这一问题. 1. 使用工具:webstorm,node开发神器,强烈推荐 2. 再说思路:先对新闻列表页面进行爬虫,再对抓到的链接一一进行目标网页的标题显示和新闻来源的统计,本页面新闻统计完毕后再跳转下一页,重新进行该过程. 备注

node爬虫(简版)

做node爬虫,首先像如何的去做这个爬虫,首先先想下思路,我这里要爬取一个页面的数据,要调取网页的数据,转换成页面格式(html+div)格式,然后提取里面独特的属性值,再把你提取的值,传送给你的页面上,在你前端页面显示,或者让你的前端页面能够去调取这些返回的值. 首先要安装以下的依赖 // 调取 npm install --save request-promise // 转换成页面格式 npm install --save cheerio // 打开node使用 npm install --s

node爬虫的几种简易实现方式

说到爬虫大家可能会觉得很NB的东西,可以爬小电影,羞羞图,没错就是这样的.在node爬虫方面,我也是个新人,这篇文章主要是给大家分享几种实现node 爬虫的方式.第一种方式,采用node,js中的 superagent+request + cheerio.cheerio是必须的,它相当于node版的jQuery,用过jQuery的同学会非常容易上手.它 主要是用来获取抓取到的页面元素和其中的数据信息.superagent是node里一个非常方便的.轻量的.渐进式的第三方客户端请求代理模块,用他来

有趣的Node爬虫,数据导出成Excel

最近一直没更新了诶,因为学习Backbone好头痛,别问我为什么不继续AngularJs~因为2.0要出来了啊,妈蛋!好,言归正传,最近帮我的好基友扒数据,他说要一些股票债券的数据.我一听,那不就是要做爬虫了么...果断用Node做!(其实也有一个股票数据API,sina提供的,但是由于不适用于债券,没办法,只好自己动手丰衣足食了) 工欲善其事,必先利其器嘛,蓬勃的Node社区提供了非常多的好的工具,下面我列出将要使用的工具: request,封装了Node的原生的http模块,使API更加简洁

Node爬虫——利用superagent模拟登陆

一.概述 最近学习了node,试着写了个爬虫,这是模拟登陆的一部分. 1.需要的工具 2.superagent用法的简述 3.抓包分析 4.最小示例 二.需要的工具 nodejs,superagent,wireshark. nodejs没什么可介绍的. superagent是nodejs众多插件之一,用npm命令安装.是一个超轻的ajax api,有着可读性强,高度灵活,学习曲线低的优点. wireshark是一个抓包工具,很强大.之后我们需要用它来分析post请求与cookie. 三.supe

node爬虫入门

爬虫其实就是模仿浏览器访问页面,然后把页面保存起来备用. 爬虫的方法,直接上代码: function getUrl(url,success,error){ let urlObj = urlParser.parse(url); let mod = null; //判断用是哪个协议,对应用哪个模块 if(urlObj.protocol=='http:'){ mod = require('http'); }else{ mod = require('https'); } let req = mod.re

node爬虫(转)

我们先来看看今天的目标: mmjpg.com的美腿频道下的图片 一.实现步骤 使用superagent库来获取页面分析页面结构,使用cheerio 获取有效信息保存图片到本地开撸不断优化 这儿我们用到了superagent cheerio fs-extra这三个库 $ npm i superagent cheerio fs-extra --save 1.superagent 是nodejs里一个非常方便的客户端请求代理模块2.cheerio:为服务器特别定制的,快速.灵活.实施的jQuery核心

使用node爬虫,爬取指定排名网站的JS引用库

前期准备 本爬虫将从网站爬取排名前几的网站,具体前几名可以具体设置,并分别爬取他们的主页,检查是否引用特定库. github地址 所用到的node主要模块 express 不用多说 request http模块 cheerio 运行在服务器端的jQuery node-inspector node调试模块 node-dev 修改文件后自动重启app 关于调试Node 在任意一个文件夹,执行node-inspector,通过打开特定页面,在页面上进行调试,然后运行app,使用node-dev app

Node 爬虫,批量爬取头条视频并保存

项目地址:GitHub 目标网站:西瓜视频项目功能:下载头条号[维辰财经]下的最新20个视频姊妹项目:批量下载美女图集 简介 一般批量爬取视频或者图片的套路是,使用爬虫获得文件链接集合,然后通过 writeFile 等方法逐个保存文件.然而,头条的视频,在需要爬取的 html 文件(服务端渲染输出)中,无法捕捉视频链接.视频链接是页面在客户端渲染时,通过某些 js 文件内的算法或者解密方法,根据视频的已知 key 或者 hash 值,动态计算出来并添加到 video 标签的.这也是网站的一种反爬