我必须使webscraping应用程序,但我读到,如果会有很多的要求,然后网站可以阻止我的ip。
cn.query('SELECT url FROM models', function (err, row, field) {
for (i in row) {
request(row[i].url, (err, res, body) => {
if (!err && res.statusCode === 200) {
const $ = cheerio.load(body);
//after getting data
let sql = "INSERT INTO prodchar (year, Display, displaysize, os, Chipset, cpu, gpu, memoryslot, Storage, PrimaryCam, videocam, FrontCam, wlan, bluetooth, batdesc) VALUES ?";
// console.log(cn.query(sql, [arr]));
cn.query(sql, [[arr]], function(err, res) {
console.log(res);
if (err) throw err;
cn.query(
"DELETE n1 FROM spec n1, spec n2 WHERE n1.id > n2.id AND n1.name = n2.name"
);
});
}
});
}
});
这是代码的开始。我必须从数据库获取链接,并在每次迭代中进入数据库并获取数据。如何为每个迭代行[i].url设置间隔?例如,为每个请求设置2分钟。请帮忙!:)
2条答案
按热度按时间6yjfywim1#
也许你应该试试设置超时,像这样?
希望有帮助。
j2qf4p5b2#
按如下方式使用异步库: