superagent返回null
发布于 6 年前 作者 CarlosRen 4690 次浏览 最后一次编辑是 5 年前 来自 问答

untitled1.png

var request = require('superagent')
 request
	.get("http://10.6.10.104:19000/workspace/index.jsp")
	.redirects(0)
	.end(function(result){
		console.log(result); // 为什么是null
	});

我做错了什么?or系统约束了什么?

16 回复

试试看带err的,

    .end(function(err, result){
	    console.log(result);
    }

看看有没有什么问题?

@lishinko = = 原来如此。。。多谢。。。 我还说呢。。。.

  var http = require("http");
		  http.get("http://10.6.10.104:19000", function(res) {
			  console.log("Got response: " + res.statusCode);
		  });

输出的很开心啊

可是为什么啊?

网址换成百度的就可以愉快的输出

好吧。你的彩色代码是怎么输出的? 其实我刚刚入门nodejs.只是正好碰到这个我前几天在研究的问题.

虽然没有用过 superagent ,但像这种 callback 第一个参数为 err 基本上是一种通用约定。况且 superagent 的文档上也有说明。 至于 http.get ,这里也有说明 :http://nodejs.cn/api/http.html#http_http_get_options_callback 这里的编辑器是采用 markdown 语法的,只要标记为 code block 的块就有语法着色, 方法是在前后各加三个反引号(esc键下面)就可以了,编辑器左边倒数第二个 i 字有圆圈的那个按钮,点一下就可以看到 md 语法的介绍

@lishinko

	Got response: 200

而且

 request
	.post("www.baidu.com").get(function(result){
		console.log(result)
	})
	//并不会是null

@klesh

感谢您指出这些细节问题,我就这么两句代码,没必要那么在意板式吧,tab也一样嘛

延伸一个问题啊,如果是爬取动态的页面的,就是页面还没绘制完成,你就获取 body 肯定是"",怎么等待

@CarlosRen sorry, markdown 是跟 lishinko 说的。 @lishinko 这里的编辑器是采用 markdown 语法的,只要标记为 code block 的块就有语法着色, 方法是在前后各加三个反引号(esc键下面)就可以了,编辑器左边倒数第二个 i 字有圆圈的那个按钮,点一下就可以看到 md 语法的介绍

@ChrisFuck superagent, http 都不支持获取动态内容。你要看下 nightmare 和 phantom 了

@klesh 谢谢,我现在看看

@klesh 我用request爬的时候返回乱码,返回的body怎么转UFT-8

如果用 nightmare / phantom 之类的话,编码就没有问题了。 转换编码的话,已经在 https://cnodejs.org/topic/545de1e1a68535a174fe51b5#5658445c05e5f19802a61da9 这里回复了。

@klesh phantom安装完成之后,一直提示require(’…’).create is not a function ,遇到过吗?我是windows环境,cmd里phantomjs可以正常执行

@klesh sorry,搞定了。。

//不需要webpage 这样就可以了
var phantom = require('phantom');

function capture(){
  var phantom = require('phantom');
  phantom.create(function (ph) {
    ph.createPage(function (page) {
      page.open('https://www.baidu.com', function () {
          console.log(new Date());
          page.render('example.png');
          ph.exit();
      });
    });
  }, {
    dnodeOpts: {
      weak: false
    }
  });
}

exports.ScreenCapture = capture;

解决了就好,但是 phantom 怎么要 var 2次?

@klesh 失误 ,没注意

回到顶部