从节点请求中获取多个元素,然后选择一个

时间:2018-09-17 06:08:53

标签: javascript jquery node.js

我的请求从一个页面获取多个标签,并对它们进行一些字符串操作。我的问题是只选择一个字符串。我的输出是

string 1
string 2
string 3
etc...

我只想举例

string 2

当我做类似console.log(a[2])的操作时,我会得到第二个't' in 'http'

如何根据请求使用以下代码进行操作

request(url, function (error, response, html) {
  if (!error && response.statusCode == 200) {
    var $ = cheerio.load(html);
    //parse to find cards
    $('div.card').each(function(i, element){
      //find all links
      a = ($(this).find('a').attr('href'));
      a = a.split('/')[3];
      //construct new string
      visiting = "http://api.website.com/stuff/"+a
      console.log(a);
      });
    };
  });

1 个答案:

答案 0 :(得分:0)


试试这个
据我了解,您需要在数组中添加所有标签,然后才能通过索引获取元素

    request(url, function (error, response, html) {
      if (!error && response.statusCode == 200) {
            var $ = cheerio.load(html);
            //parse to find cards
            var a=[];
            $('div.card').each(function(i, element){
                  tag = $(this).find('a').attr('href').split('/')[3]
                  //construct new string
                  visiting = "http://api.website.com/stuff/"+tag
                  a.push(tag);
              });
            console.log(a[2]);
        };
      });

//编辑1

您可以使用此功能

    function getRandomInt(max) {
      return Math.floor(Math.random() * Math.floor(max));
    }

您的代码如下:

    request(url, function (error, response, html) {
      if (!error && response.statusCode == 200) {
            var $ = cheerio.load(html);
            //parse to find cards
            var a=[];
            $('div.card').each(function(i, element){
                  tag = $(this).find('a').attr('href').split('/')[3]
                  //construct new string
                  visiting = "http://api.website.com/stuff/"+tag
                  a.push(tag);
              });
            //get random tag
            console.log(a[getRandomInt(a.length)]);
        };
      });