私はノード js の初心者で、Web スクレイピング スクリプトを作成しようとしています。1 分間に 15 件未満のリクエストを行う場合、サイト管理者から製品をスクレイピングする許可を得ました。最初は一度にすべての URL を要求していましたが、いくつかのツールを使用した後、配列内の各項目を処理することができましたが、配列内に項目がなくなったときにスクリプトが停止しませんか? 私は自分の結果にあまり満足しておらず、これを行うためのより良い方法があると感じています.
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
var async = require('async');
app.get('/scrape', function(req, res){
productListing = ['ohio-precious-metals-1-ounce-silver-bar','morgan-1-ounce-silver-bar']
var i = 0;
async.eachLimit(productListing, 1, function (product, callback) {
var getProducts = function () {
var url = 'http://cbmint.com/' + productListing[i];
request(url, function(error, response, html) {
if(!error){
var $ = cheerio.load(html);
var title;
var json = { title : ""};
$('.product-name').filter(function(){
var data = $(this);
title = data.children().children().first().text();
json.title = title;
})
}
var theTime = new Date().getTime();
console.log(i);
console.log(json.title);
console.log(theTime);
i++;
});
}
setInterval(getProducts,10000);
})
res.send('Check your console!')
})
app.listen('8081')
console.log('Magic happens on port 8081');
exports = module.exports = app;