用node.js爬一下优酷

来源:互联网 发布:电商发展数据统计 编辑:程序博客网 时间:2024/06/05 04:34

初学node,爬一下优酷的视频,写的比较粗糙

var http = require('http');var cheerio = require("cheerio");var url = "http://www.youku.com/";var all = [];http.get(url,function(res){    var html = "";    res.on("data" , function (chunk) {        html +=chunk;    });    res.on("end" , function(){        fenxi(html);        all.forEach(function(e){            console.log(" 【    "+e.title+"    "+e.link+"     】"+"\n");        });        console.log(all.length);    }).on("error",function(){        console.log("获取错误");    });});//利用 cheerio 分析HTML文件。下面边看文档变写。。。毕竟菜function fenxi(html){//首先你需要加载HTML。这一步对jQuery来说是必须的,since jQuery operates on the one, baked-in DOM。通过Cheerio,我们需要把HTML document 传进去。    var $ = cheerio.load(html);//分析源码发现每一块视频包在class为yk-row的div里    var $bigs = $(".yk-row");    //console.log($bigs.length);//遍历每一个大块,得到小子块    $bigs.each(function(i){        var $big= $(this);       //开始寻找大块里的中块        var $middles = $big.children();        //console.log("middle:   "+$middles.length);        //遍历每一个中块,在中块里找到每一个视频的a元素        }) $middles.each(function (j) {            var $middle = $(this);            var $views = $middle.children();            //console.log($views.length);            $views.each(function (k) {                var $view = $(this);                var title = $view.find("a").attr("title");                var href = $view.find("a").attr("href");                var each ={                    title : title,                    link : href                };                all.push(each);            })    })}
轮播图部分的还爬不出来。。。