HTTP小爬虫 ,nodejs学习(二)

使用nodejs抓取网页数据,这里用到cheerio,解析html十分好用,和jquery用法完全一致。

首先安装cheerio,在命令行中输入 npm install cheerio;(在nodejs根目录下输入该命令)

安装完成以后,我们来解析慕课网上http://www.imooc.com/learn/348,获取其上的课程信息。

代码如下:

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

function filter(html){//抓取需要的课程信息
    var $ = cheerio.load(html);
    var chapters = $(‘.chapter‘);
    //var result = [{ chapterTitle:‘‘, videos:[title:‘‘, id:‘‘] }];抓取结果的格式
    var result = [];
    chapters.each(function(){
        var item = $(this);
        var chapterTitle = item.find(‘strong‘).text();
        var videos = item.find(‘.video‘).find(‘li‘);
        var chapterData = {
            chapterTitle: chapterTitle,
            videos: []
        };
        videos.each(function(){
            var video = $(this).find(‘.studyvideo‘);
            var title = video.text().split(‘)‘)[0] + ‘)‘;//去除有用信息后面的空白
            //console.log(title);
            var id = video.attr(‘href‘).split(‘video/‘)[1];//只取课程视频的编号
            chapterData.videos.push({
                title: title,
                id: id
            });
        });
        result.push(chapterData);
    });
    return result;
}

function printResult(result){//打印抓取结果
    var str = ‘‘;
    result.forEach(function(item){
        str += item.chapterTitle + ‘\n‘;
        item.videos.forEach(function(item){
            str += ‘ 【‘ + item.id + ‘】 ‘ + item.title + ‘\n‘;
        });
    });
    console.log(str);
}

http.get(url, function(res){
    var html = ‘‘;
    res.on(‘data‘, function(data){//获取整个页面的所有信息
        html += data;
    });
    res.on(‘end‘, function(){
        var result = filter(html);//过滤该页面,抓取需要的课程信息
        printResult(result);//打印抓取的结果
    });
}).on(‘error‘, function(){//在获取页面信息时发生错误
    console.log(‘error!‘);
});

结果:

第1章 前言
【6687】 1-1 前言 (01:20)
【6688】 1-2 为什么学习Nodejs (05:43)
第2章 安装 Nodejs
【6689】 2-1 课程简介 (01:19)
【6690】 2-2 Nodejs版本常识 (01:02)
【6691】 2-3 Windows下安装Nodejs (04:43)
【6692】 2-4 Linux下安装Nodejs (06:24)
【6693】 2-5 Mac下安装Nodejs (03:55)
第3章 等不及了来尝鲜
【6694】 3-1 起一个web服务器 (05:14)
【6695】 3-2 命令行中体验 (02:47)
第4章 模块与包管理工具
【6697】 4-1 Node.js 的模块 与 Commonjs 规范 (03:44)
【6700】 4-2 模块的分类 (00:45)
【6701】 4-3 简单的Nodejs模块 (09:23)
第5章 横扫 Nodejs API
【6705】 5-1 不要陷入版本选择的深渊 (02:32)
【6710】 5-2 URL网址解析的好帮手 (10:30)
【6711】 5-3 QueryString参数处理小利器 (06:40)
【6712】 5-4 HTTP知识先填坑 (09:43)
【6713】 5-5 HTTP知识填坑之“以慕课网为例分析” (10:13)
【7557】 5-6 HTTP 事件回调进阶 (17:51)
【7558】 5-7 HTTP 源码解读之先了解作用域、上下文 (20:50)
【7963】 5-8 HTTP 源码解读 (22:08)
【7964】 5-9 HTTP 性能测试 (09:15)
【7965】 5-10 HTTP 小爬虫 (17:33)
【8525】 5-11 事件模块小插曲 (15:15)
【8837】 5-12 request方法 (17:56)

本文是在学习了慕课网上的课程后发表的,网址:http://www.imooc.com/learn/348

时间: 2024-10-05 04:09:18

HTTP小爬虫 ,nodejs学习(二)的相关文章

nodejs学习二 深入了解console

上一篇我们用console.log编写了第一个程序,虽然如此简单.那么我就从它来说说Node.js中的对象. 对于学过Java .net 的人来说,对象这个词应该都很亲切,如果不觉得亲切,还是先学习一下面向对象. 我们编程中,一切皆对象.你可以把任何一个东西当做对象. 然而,Node.js中也存在对象,而console也是一种对象.既然是对象,他应该有公有的方法.正如你所看到的,log就是它的方法,貌似还是静态的. 那么console中有哪些方法呢,那我们就让他输出一下吧. 噢,原来consol

nodejs 学习二, nodejs调试

nodejs 调试,在官方文档(英文),常用的两种: 一个在chrome安装插件inspector 第二种利用编辑 这里我使用vscode编辑来调试. 主要是配置 launch.json(用vscode打开项目是,会生成.vscode文件,launch.json就在里面), launch.json配置如下: { // 使用 IntelliSense 了解相关属性. // 悬停以查看现有属性的描述. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?

【Rollo的Python之路】Python 爬虫系统学习 (二) Requests 模块学习

Requests模块学习: 1.0  Requests 初识 Requests 模块是一个第三方的库,首先我们要安装Requests.用pip安装,先看一下pip是哪个python 的版本. pip --version 然后用pip安装就OK pip install requests 开始要导入 Requests 模块 import requests 然后我们试一下: import requests results = requests.get('https://www.baidu.com')

Python 基础学习 网络小爬虫

<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imgli

nodejs .http模块, cheerio模块 实现 小爬虫.

代码: 1 var http = require("http"); 2 3 var cheerio = require("cheerio"); 4 5 6 var url = 'http://www.imooc.com/learn/348'; 7 8 9 http.get(url, function(res){ 10 var html = ''; 11 12 res.on('data', function(data){ 13 html += data; 14 });

用NodeJs做一个小爬虫

作者:北京起步科技前端研究员,专注分享HTML5 App快速开发工具 WeX5 的黑魔法以及相应的前端技术. 前言 利用爬虫可以做很多事情,单身汉子们可以用爬虫来收集各种妹子情报,撩妹族们可以用爬虫收集妹子想要的小东西,赚大钱的人可以用来分析微博言论与股票涨跌的关系诸如此类的,简直要上天了. 你们感受一下 点我点我: 蠢蠢欲动 抛开机器学习这种貌似很高大上的数据处理技术,单纯的做一个爬虫获取数据还是非常简单的.对于前段er们来说,生在有nodejs的年代真是不要太幸福了,下面就用nodejs来做

http 小爬虫

初学nodejs写一个http小爬虫,爬虫就是把网页上的代码爬下来. 代码: var http = require('http') //加载http模块var url = 'http://www.imooc.com/learn/713' http.get(url,function(res){   //get去请求url,此处以慕课网为例 var html = '' res.on('data',function(data){ html += data     //请求数据赋值给前面定义的html

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

Java豆瓣电影爬虫——小爬虫成长记(附源码)

以前也用过爬虫,比如使用nutch爬取指定种子,基于爬到的数据做搜索,还大致看过一些源码.当然,nutch对于爬虫考虑的是十分全面和细致的.每当看到屏幕上唰唰过去的爬取到的网页信息以及处理信息的时候,总感觉这很黑科技.正好这次借助梳理Spring MVC的机会,想自己弄个小爬虫,简单没关系,有些小bug也无所谓,我需要的只是一个能针对某个种子网站能爬取我想要的信息就可以了.有Exception就去解决,可能是一些API使用不当,也可能是遇到了http请求状态异常,又或是数据库读写有问题,就是在这