node爬虫(免登陆)

var http = require('http');
var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs'); //用来操作文件
//var url = 'http://www.budejie.com/';
var url="http://www.budejie.com/text/"
let arcList=[];
let zoomNum=0;

function GetData(url,num,arcList,zoomNum){
    http.get(url+num, function (res) {
        var html = '';
        // var arcInfo = {};
        res.on('data', function (chunk) {
            //console.log(chunk)
            html += chunk;
        });
        res.on('end', function () {
            arcList = filterHtml(url,html,arcList);

            console.log(
                "第"+num+"页已完成"
                +"#上次数据"+zoomNum
                +"现在数据"+arcList.length
                )
            
            if(zoomNum==arcList.length){
                console.log("爬取结束: 爬去总数据如下")
              }else{
                zoomNum=arcList.length
                num++
                GetData(url,num,arcList,zoomNum)
              }      
        });
    });
}

GetData(url,1,arcList,zoomNum)



function filterHtml(URL,html,arcList) {
    //console.log(html)
    var $ = cheerio.load(html);
    var aPost = $(".j-r-list").find("ul").find("li");
    aPost.each(function () {
        var ele = $(this);
        var title = ele.find(".j-list-user .u-txt a").text();
        var url = ele.find(".j-list-user .u-txt a").attr("href");
        //var imgurl = ele.find(".j-list-user .u-img a img").attr("src");
        //ele.find(".postTitle a").remove();
        var entry = ele.find(".j-r-list-c .j-r-list-c-desc a").text();
        //ele.find("small a").remove();
        //var entryurl = ele.find(".j-r-list-c .j-r-list-c-desc a").attr("href");
        //var entryimgurl = ele.find(".j-r-list-c .j-r-list-c-img a img").attr("src");



      //通过管道的方式用fs模块将图片写到本地的images文件下
      //request(imgurl).pipe(fs.createWriteStream('./images/'+"a"+Math.random()+".js"));
        
        //var re = /\d{4}-\d{2}-\d{2}\s*\d{2}[:]\d{2}/;
        //listTime = listTime.match(re)[0];
        if(title=="") return;
        arcList.push({
            title: title,
            url: URL+url,
            //imgurl:imgurl,
            entry: entry,
            //entryurl: URL+entryurl,
            //entryimgurl:entryimgurl,
        });
    });

    return arcList;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值