web-dev-qa-db-ja.com

node.jsを使用して(外部Webサイトから)すべてのハイパーリンクを抽出し、リクエストします

現在、アプリはnodejs.orgのソースコードをコンソールに書き込みます。代わりに、nodejs.orgのすべてのハイパーリンクを記述したいと思います。 bodyからリンクを取得するには、たぶん1行のコードが必要です。

app.js:

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

var request = require("request");



request("http://nodejs.org/", function (error, response, body) {
    if (!error)
        console.log(body);
    else
        console.log(error);
});
17
Michael Moeller

あなたはおそらく jsdomjquery または cheerio のいずれかを探しています。あなたがしていることはスクリーンスクレイピングと呼ばれ、サイトからデータを抽出します。 jsdom/jqueryはツールの完全なセットを提供しますが、cheerioははるかに高速です。

これがcheerioの例です:

var request = require('request');
var cheerio = require('cheerio');
var searchTerm = 'screen+scraping';
var url = 'http://www.bing.com/search?q=' + searchTerm;
request(url, function(err, resp, body){
  $ = cheerio.load(body);
  links = $('a'); //jquery get all hyperlinks
  $(links).each(function(i, link){
    console.log($(link).text() + ':\n  ' + $(link).attr('href'));
  });
});

自分に最適なものを選択します。

55
user568109