解析Node.js中的数据

解析Node.js中的数据,node.js,Node.js,我这里有一段代码,我想从中解析数据,它应该得到url:part中的url,代码是: var search = require('youtube-search'); var opts = { maxResults: 3, startIndex: 1 }; search('deadmau5', opts, function(err, results) { if(err) return console.log(err); var title1 = results.indexO

我这里有一段代码,我想从中解析数据,它应该得到url:part中的url,代码是:

var search = require('youtube-search');

var opts = {
  maxResults: 3,
  startIndex: 1
};

search('deadmau5', opts, function(err, results) {
  if(err) return console.log(err);
     var title1 = results.indexOf("url:");
     var title2 = results.indexOf("&feature");
     var titl = results.substr(title1 + 7);
     var result = titl.substr(0, titl.indexOf("&feature"));
  console.log(result);
});
但是我得到了这个错误:

    var titl = results.substr(title1 + 7);
                        ^
TypeError: Object [object Object],[object Object],[object Object],[object Object
],[object Object],[object Object],[object Object],[object Object],[object Object
],[object Object] has no method 'substr'
    at c:\Users\karim_000\desktop\iplogger.js:12:25
    at c:\Users\karim_000\desktop\node_modules\youtube-search\index.js:42:9
    at Parser.<anonymous> (c:\Users\karim_000\desktop\node_modules\youtube-searc
h\node_modules\xml2js\lib\xml2js.js:255:20)
    at Parser.emit (events.js:95:17)
    at Object.saxParser.onclosetag (c:\Users\karim_000\desktop\node_modules\yout
ube-search\node_modules\xml2js\lib\xml2js.js:225:24)
    at emit (c:\Users\karim_000\desktop\node_modules\youtube-search\node_modules
\xml2js\node_modules\sax\lib\sax.js:615:33)
    at emitNode (c:\Users\karim_000\desktop\node_modules\youtube-search\node_mod
ules\xml2js\node_modules\sax\lib\sax.js:620:3)
    at closeTag (c:\Users\karim_000\desktop\node_modules\youtube-search\node_mod
ules\xml2js\node_modules\sax\lib\sax.js:861:5)
    at Object.write (c:\Users\karim_000\desktop\node_modules\youtube-search\node
_modules\xml2js\node_modules\sax\lib\sax.js:1293:29)
    at Parser.exports.Parser.Parser.parseString (c:\Users\karim_000\desktop\node
_modules\youtube-search\node_modules\xml2js\lib\xml2js.js:273:29)
    at Parser.parseString (c:\Users\karim_000\desktop\node_modules\youtube-searc
h\node_modules\xml2js\lib\xml2js.js:6:61)

我不知道我做错了什么,有什么见解或帮助吗?提前感谢

结果是一组对象

search('deadmau5', opts, function(err, results) {
  if(err) return console.log(err);
  results.forEach(function (result) {
    console.log(result.url);
  });
});
这段代码将在您的数组上迭代,并记录结果数组中每个对象的url属性


正如Seth提到的,你得到的搜索结果超过了3个

这将记录您正在查找的URL的每个子字符串,以便您可以进一步操作它

var search = require('youtube-search');

var opts = {
  maxResults: 3,
  startIndex: 1
};

search('deadmau5', opts, function(err, results) {
  if(err) return console.log(err);
  results.forEach(function(result) {
    console.log(result.url.substring(0, result.url.indexOf('&feature')));
  });
});
这将产生:

http://www.youtube.com/watch?v=_9IBbMW2o_o
http://www.youtube.com/watch?v=-O85-OXktNs
http://www.youtube.com/watch?v=kWb-zs1L8Ss

结果是一个Json数组,不能对其使用字符串方法。从Json中获取所需的元素,然后使用substr或任何其他方法

例如:Json数组中第一个元素的标题可以如下所示 var title=结果[0]['title']


我建议您阅读有关JSON的内容。

您只是想获取第一个结果的信息吗?老实说,我想找到一些方法来单独解析所有3个结果以获取它们,但是如果您知道更好的方法,请告诉我!全部三个?您将获得10个搜索结果。您只需要url中的字符串:'http://www.youtube.com/watch?v=h7ArUgxtlJs&feature=youtube_gdata”“就像http://www.youtube.com/watch?v=h7ArUgxtlJs?oops是的,全部3个,是的,这就是我想要解析出来的。