2013-03-11 10 views
8

現在、私たちのアプリはnodejs.orgのソースコードをコンソールに書き込みます。 代わりにnodejs.orgのハイパーリンクをすべて書きたいと思っています。 bodyからリンクを取得するコードが1行必要な場合があります。node.jsを使用して(外部のWebサイトから)ハイパーリンクをすべて抽出してリクエストしてください

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); 
}); 

答えて

35

おそらくjsdomjqueryまたはcheerioのいずれかを探しています。あなたがやっていることはスクリーンスクレイピングと呼ばれ、サイトからデータを抽出します。 jsdom/jqueryはツールの完全なセットを提供しますが、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')); 
    }); 
}); 

:ここ

はチェリオの一例です。

+5

あなたの名前を変更することを強くお勧めします:high_speed_answer_right_man :) –

+2

ありがとうかもしれません。私はちょうど2000年の記者を通過しました;) – user568109

+0

cheerioを使ってdocument.linksの結果を得るためにとにかくありますか? – yeya

関連する問題