用node.js爬一下优酷

初学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);
            })

    })
}
轮播图部分的还爬不出来。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章