1

まず、これまでに進行したコードを次に示します。

var http = require("http");

// Utility function that downloads a URL and invokes
// callback with the data.
function download(url, callback) {
  http.get(url, function(res) {
    var data = "";
    res.on('data', function (chunk) {
      data += chunk;
    });
    res.on("end", function() {
      callback(data);
    });
  }).on("error", function() {
    callback(null);
  });
}

var cheerio = require("cheerio");

var url = "http://www.bloglovin.com/en/blogs/1/2/all";
var myArray = [];
var a = 0;

var getLinks = function(){download(url, function(data) {
  if (data) {
    // console.log(data);
    var $ = cheerio.load(data);
    $(".content").each(function(i, e) {
      var blogName = $(e).find(".blog-name").text();
      var followLink = $(e).find("a").attr("href");
      var blogSite = $(e).find(".description").text();

      myArray[a] = [a];
      myArray[a]["blogName"] = blogName;
      myArray[a]["followLink"] = "http://www.bloglovin.com"+followLink;
      myArray[a]["blogSite"] = blogSite;

      a++;

      console.log(myArray);

    });
  }
});
}

getLinks();

ご覧のとおり、followLinksは に連結されfollowUrlており、ダウンロードを通過させたい'url'ので、同じ CSS ルールを使用して各ページを効果的にスクレイピングし、対応するブロガーの多次元配列に追加します。 .

これについてどうすればいいですか?

4

3 に答える 3

0

ループ内で、スクレイピングしたプロパティを持つオブジェクトを作成し、そのオブジェクトを配列にプッシュします。

var blogInfo = {
  blogName: blogName,
  followLink: "http://www.bloglovin.com"+followLink;
  blogSite: blogSite
};
myArray.push(blogInfo);
于 2013-12-13T18:16:48.160 に答える