扫码关注官方订阅号
需要写一个功能,同步抓取另外一个网页中的数据并显示给用户。
问题就出现了,因为是单独写了一个抓取网页的模块,在模块中使用.get()是异步获取,但是我又无法在on('end')的时候直接返回值,因为返回的只是.get中的方法的返回值。
请问应该如何解决这种问题呢?
闭关修行中......
module.exports = function(callback){ var req = http.request({ hostname:'top.baidu.com', port:80, path:'/category?c=10&fr=topindex', method:'GET', header:{} },function(response){ //也是一个流对象 console.log(response.statusCode); console.log(response.headers); var bufs = []; response.on('data',function(data){ bufs.push(data); }) response.on('end',function(){ var buffer = Buffer.concat(bufs); var result = iconv.decode(buffer,'gbk'); var reg = /<a.+?<\/a>/g; var categories = result.match(reg); categories = categories.filter(function(category){ return category.includes('buzz'); }); callback(categories); }); }); req.write('请求体'); //当调用end的时候请求才会真正发出 req.end(); }
是这个意思吗,用nodejs 抓取 别网站的数据,返回给自己的client端。 使用http的request,第一个参数是配置项,第二个是请求成功的回调函数,然后我们就可以监听 响应体中的数据了。。
看看jquery的ajax吧...
http://www.w3school.com.cn/jquery/jquery_ajax_get_post.asp
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
看看jquery的ajax吧...
http://www.w3school.com.cn/jquery/jquery_ajax_get_post.asp