2016-07-24 1 views
1

ウェブサイトをスクラップしようとしていますが、結果をHTMLファイルに書き込むことができません。Node.jsでページを削り取るには

私はnode.jsでcheerioを使用しました。私のコードは以下のとおりです。

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

http.createServer(function (req, res) { 
    res.write('<html><head></head><body>'); 
     request('http://www.espn.com', function(err, res, html){ 
      var $ = cheerio.load(html); 

      $('a.realStory').each(function(i, element) { 
       var node = $(this); 
       var text = node.text(); 
      res.write('<p>'+ text +'</p>');  
      }); 
     }); 

    res.end('</body></html>'); 
}).listen(1337); 

このファイルを実行してから、自分のローカルホストに移動して表示するにはどうすればよいですか?

答えて

1

初歩的インプリメンテーション:

var express = require('express'), 
    path = require('path'), 
    request = require('request'), 
    cheerio = require('cheerio'), 
    app = express(); 
app.get('/', function (req, res) { 
    request('http://www.espn.com', function (e, r, html) { 
     var $ = cheerio.load(html); 
     $('a.realStory').each(function (i, element) { 
      var node = $(this); 
      var text = node.text(); 
      res.write('<p>' + text + '</p>'); 
     }); 
     res.end(); 
    }); 
}); 
app.listen(process.env.PORT || 1337, function() { 
    console.log("Server running.."); 
}); 
+0

このIcemanに感謝します。 Icemanのコードを入力すると、HTMLに1行表示され、「送信後にヘッダーを設定します」というエラーが表示されます。 –

+0

@StuartConroyが更新されました! – Iceman

+1

素晴らしい作品です、ありがとう、アイスマン! –

0

あなたは今まであなたが実行/ JavaScriptを(シングルページアプリ)を補間する必要がある場合に実行する場合は、https://github.com/joelgriffith/navaliaのようなものは、おそらく最適だろう。私はすでにノードに書かれたスクレイピングアルゴリズムを持っている人々のためのインタフェースのようなcheerioを公開することを検討しています。

関連する問題