萌新弱弱的问个问题,关于回调的。爬虫
发布于 7 年前 作者 Myth52125 2638 次浏览 来自 问答
//爬取到的html源码
var html=''

//b函数处理爬取的源码然后处理返回一个结果
var newHtml=''
app.post('/',function(req,res){
	http.get(req.body.url,function(res){
		//巴拉巴拉。。这里获取了整个html的源码 html
		res.on('end',function(){
			//对爬取的结果进行处理
			var newHtml=b(html)
		})
	
	res.send(newHtml)	
	})
	})

那我怎么才能拿到这个newHtml了,res.send()啊??

如果可以的话,能说一下原理是什么吗

如果要改进下,比如,可以获取https和http的

//balabala
function getHtml(url){
var html=''
	//balabala  判断
	http.get(ur;,function(httpRes){
		//balabala
		httpRes.on('end',function(){
			//调用b()加工获取的html
			return obj=b(html)	
		})
	})
}

然后在路由里就直接是

//balabala

app.post('/',function(req.res){
	var obj=getHtml(req.body.url)
	res.send(obj)
})

这样字应该不能获取到修改后的obj吧?

5 回复

res.send(newHtml)放在 on end里面

变量名不要冲突了,内层和外层的res

@imhered 我改了一下,麻烦再看看吧

@DevinXian 我改了一下,麻烦再看看吧

需要使用回调函数了,异步编程基础找点资料看看,不要太多,看完你就明白了;return是同步编程风格,只是内层函数返回,外层并没有返回数据哦

回到顶部