だからこれは私が要求してチェリオモジュール使用しています(私のページをクロールするために使用するコードです:私はパースだと後遅らせる要求
for (let j = 1; j < nbRequest; j++)
{
const currentPromise = new Promise((resolve, reject) => {
request(
`https://www.url${j}`,
(error, response, body) => {
if (error || !response) {
console.log("Error: " + error);
}
console.log("Status code: " + response.statusCode + ", Connected to the page");
var $ = cheerio.load(body);
let output = {
ranks: [],
names: [],
numbers: [],
};
$('td.rangCell').each(function(index) {
if ($(this).text().trim() != "Rang")
{
output.ranks.push($(this).text().trim().slice(0, -1));
nbRanks = nb_ranks+1;
}
});
$('td.nameCell:has(label)').each(function(index) {
output.names.push($(this).find('label.nameValue > a').text().trim());
});
$('td.numberCell').each(function(index) {
if ($(this).text().trim() != "Nombre")
{
output.numbers.push($(this).text().trim());
}
});
console.log("HERE 1");
return resolve(output);
}
);
});
promises.push(currentPromise);
}
をして、結果を保存するにはcsvファイルをノードモジュールで使用 この時点では約100ページをクロールできましたが、それよりはるかに大きな数値(1000+)になると、私は500レスポンスを受け取っています。 。 だから私は最善の解決策が要求を遅らせることがあると思いますが、私は解決策を見つけることができませんでした。 君たちがどんな考えを持っていますし、どのようにコードがどのように見えるのでしょうか?
私はすでに各要求に対して約束を作成することにより、「流れを制御する」と思います。私のCSVファイルで、私は希望の順序でデータを受け取ります。 私はそれぞれの間に遅延を追加しようとしています。 –
さて、あなたは単に「制御命令」であり、あなたの約束は同時に解決されるでしょう。 –
はasync.queueのために手に入れましたが、リクエストのコールバックの最後の部分にsetTimeoutを追加すると助けてくれますか? –