'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赋值一个变量,然后进行处理?我试过但是赋值后的结果遍历都是一些方法?
小弟初学,多谢各位了
PHP中文网2017-04-17 14:40:50
'厳密に使用'
var superagent = require("superagent");
var チェリオ = require('チェリオ');
var Express = require('express');
var co = require('co');
var app = Express();
app.set('ビューエンジン', 'ejs');
関数 getContent(url) {
return new Promise((解決、拒否) => {
htmlContent = '';
v2exContent = '';
if (url === 'oschina') {
スーパーエージェント
.get('http://www.oschina.net/')
.end(関数(err, res) {
if (エラー) {
拒否(エラー);
}
let $ = Cherio.load(res.text, {
デコードエンティティ: true
});
$('#業界ニュース .p1 a').each((id, element) => {
// console.log(要素);
// $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'))) {
アドレス = 'http://www.oschina.net' + $(要素).attr('href');
}
htmlContent += '<a href=\"' + アドレス + '\" target=\"_balank\">' + $(要素).text() + '</a><br><br>';
});
解決(htmlコンテンツ);
});
} それ以外 {
スーパーエージェント
.get('https://www.v2ex.com/api/topics/hot.json')
.end(関数(err, res) {
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>';
}
}
解決(v2exContent);
});
}
})
}
app.get('/', function(req, res1) {
let gen = function*() {
let c1 = yield getContent('oschina');
let c2 = yield getContent('v2ex');
res1.render('インデックス', {
'htmlContent': c1、
'v2exContent': c2、
});
}
//console.log(htmlコンテンツ)
co(gen).then(() => {
// console.log('111');
})
});
app.listen(80, function() {
console.log('ポート 80 でリッスンしているサンプル アプリ!');
});
怪我咯2017-04-17 14:40:50
var code = function(dosome){
superagent.end(function(){
HTMLを取得する
dosome(html);
});
}
コード(関数(html){
アラート(html)
});