首页 > superagent抓取内容后如何传值?

superagent抓取内容后如何传值?

'use strict'
var superagent = require("superagent");
var cheerio = require('cheerio');
var express = require('express');

var app = express();
app.set('view engine', 'ejs');

var htmlContent = '';
app.get('/', function(req, res1) {
    //htmlContent = '';   
    superagent
        .get('http://www.oschina.net/')
        .end(function(err, res) {
            let $ = cheerio.load(res.text, {
                decodeEntities: true
            });
            $('#IndustryNews .p1 a').each((id, element) => {
                let reg = new RegExp("^\/news", "g");
                let reg1 = new RegExp("^\/p", "g");
                let address = $(element).attr('href');
                if (reg.test($(element).attr('href')) || reg1.test($(element).attr('href'))) {
                    address = 'http://www.oschina.net' + $(element).attr('href');
                }
                htmlContent += '<a href=\"' + address + '\" target=\"_balank\">' + $(element).text() + '</a><br><br>';
                    
            });
             res1.render('index', {
                    'htmlContent': htmlContent,
                });
        });
    // res1.render('index', {
    //    'htmlContent': htmlContent,
    // });
});
app.listen(80, function() {
    console.log('Example app listening on port 80!');
});

这段程序是获取 oschina.net 上部分左侧的新闻内容的,具体问题如下:
1.如果superagent写一个函数里,如何将htmlContent作为函数的返回值?
2.如果还像这么样写,回调函数的htmlContent如何赋值到外层的htmlContent?
3.能否将superagent赋值一个变量,然后进行处理?我试过但是赋值后的结果遍历都是一些方法?

小弟初学,多谢各位了


var code = function(dosome){
    superagent.end(function(){
        get html
        dosome(html);
    });
}

code(function(html){
    alert(html)
});

'use strict'
var superagent = require("superagent");
var cheerio = require('cheerio');
var express = require('express');
var co = require('co');

var app = express();
app.set('view engine', 'ejs');

function getContent(url) {
    return new Promise((resolve, reject) => {
        let htmlContent = '';
        let v2exContent = '';
        if (url === 'oschina') {
            superagent
                .get('http://www.oschina.net/')
                .end(function(err, res) {
                    if (err) {
                        reject(err);
                    }
                    let $ = cheerio.load(res.text, {
                        decodeEntities: true
                    });

                    $('#IndustryNews .p1 a').each((id, element) => {
                        // console.log(element);
                        // let $element = $;
                        let reg = new RegExp("^\/news", "g");
                        let reg1 = new RegExp("^\/p", "g");
                        let address = $(element).attr('href');
                        if (reg.test($(element).attr('href')) || reg1.test($(element).attr('href'))) {
                            address = 'http://www.oschina.net' + $(element).attr('href');
                        }
                        htmlContent += '<a href=\"' + address + '\" target=\"_balank\">' + $(element).text() + '</a><br><br>';
                    });
                    resolve(htmlContent);
                });
        } else {
            superagent
                .get('https://www.v2ex.com/api/topics/hot.json')
                .end(function(err, res) {
                    let v2ex = '';
                    let arr = JSON.parse(res.text);
                    if (res != '') {
                        
                        for (let i = 0; i < arr.length; i++) {
                            // console.log(arr[i]);
                            v2exContent += '<a href=\"' + arr[i].url + '\" target=\"_balank\">' + arr[i].title + '</a><br><br>';
                        }
                    }
                    resolve(v2exContent);
                });
        }
    })


}


app.get('/', function(req, res1) {
    let gen = function*() {
            let c1 = yield getContent('oschina');
            let c2 = yield getContent('v2ex');
            res1.render('index', {
                'htmlContent': c1,
                'v2exContent': c2,
            });
        }
        //console.log(htmlContent)
    co(gen).then(() => {
        // console.log('111');
    })
});

app.listen(80, function() {
    console.log('Example app listening on port 80!');
});
【热门文章】
【热门文章】