【问题标题】:Scraping URLs from a web page with Node.js使用 Node.js 从网页中抓取 URL
【发布时间】:2017-08-13 22:18:37
【问题描述】:

我正在尝试从网站上抓取所有 URL 并将它们放入一个数组中。我有一个关于数组索引的问题。如果我将像 2 这样的索引号添加到数组 [2] 中,命令行会回复“未定义”。如果我删除索引并打印整个数组,它会逐行打印所有 URL。我希望每个 URL 都是自己的索引,例如:

  • array[0] = 找到第一个 URL
  • array[1] = 找到第二个 URL
  • array[2] = 找到第三个 URL 等等。

谁能指出我正确的方向?谢谢你。

  var request = require('request');
    var cheerio = require('cheerio');

   var url = 'http://www.hobo-web.co.uk/';

    request(url, function(err, resp, body){
      $ = cheerio.load(body);
      links = $('a'); //use your CSS selector here
      $(links).each(function(i, link){
        var array = $(link).attr('href');
        console.log(array[2]);

      });
    });``

【问题讨论】:

    标签: javascript arrays node.js cheerio


    【解决方案1】:

    您首先需要将数组创建为可在 .each 循环中访问的变量,然后继续将 href 值推送给它。

    var request = require('request');
    var cheerio = require('cheerio');
    
    var url = 'http://www.hobo-web.co.uk/';
    
    var array = [];
    
    request(url, function(err, resp, body){
      $ = cheerio.load(body);
      links = $('a');
      $(links).each(function(i, link){
        var href = $(link).attr('href');
        array.push(href);
      });
    });
    

    【讨论】:

    • 数组可以(并且可能应该)在回调函数中声明,而不是在你拥有它的地方,因为这是你知道它有效的唯一地方。另外,$links 应该被声明。
    • 非常感谢!正是我需要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多