実際、ノードを使用して ImDb から映画をスクレイピングしようとしていますが、リクエストを行った後、output.JSON ファイル (映画の評価とレビューが来る場所) で undefined を取得しています。
まず、http://www.imdb.com/find?q= 'movie' にリクエストを送信します。ここで、自分でクエリを実行できるように、映画を動的にする必要があります。そしてシリアルNo. 映画の URL にリクエストを送信して、評価とレビューをスクレイピングします
しかし、未定義になっています...コードを確認して修正してください
var express = require('express');
var Cheerio = require("cheerio");
var request = require("リクエスト");
var fs = require('fs');
var app = Express();
app.get('/scrape/:movie' , function(req, res) {
var movie = req.params.movie;
option = {
protocol : "http:",
host: "www.imdb.com",
pathname : "/find " ,
query: "q=movie"
}
// ここでhttp://www.imdb.com/find?q= 'movie'をリクエストしています
request(option,function(error,request,body) {
if(!error && response.statusCode == 200) {
var $ =cheerio.load(body);
var select=$(".result_text").attr("href");
}
});
// ここでは、最初に見つかった映画のシリアル番号を imdb 検索から抽出しています。
urls = "http://www.imdb.com/ + 'select' ";
request(urls, function(error,response,body) {
if(!error && response.statusCode == 200) {
var $ =cheerio.load(body);
var title, release, rating, review;
var json = { title : "",review : ""};
json.title =$(".title").text();
json.review= $(".reviewSection").text();
}
fs.writeFile('output.json', JSON.stringify(json, null, 7), function(error) {
if(!error)
console.log('File successfully written! - Check your project directory for the output.json file');
});
res.send('Check your console!');
});
}); app.listen(3000);