Also, wenn ich Ihren Code ausführen, die ersten vier Antworten zurück eine leere header
Variable erstellen. Das Ergebnis von:
$('.player_header').text().trim().split("-");
ist eine leere Zeichenfolge.
Aber jedes Mal, wenn ich es laufe, bekomme ich vier verschiedene, die leer sind. Ich denke, das ist eine Art serverseitiges Problem, wenn Sie 12 schnelle Feueranfragen senden.
In einem Test, wenn ich die Anfragen auf eine Anfrage pro Sekunde verlangsamen, melden alle 12 Daten. Dies ist definitiv ein serverseitiges Problem, bei dem es nicht gefällt, so viele Anfragen gleichzeitig zu erhalten.
Hier ist ein Beispiel für Testcode, der die Anforderungen auf einen pro Sekunde verlangsamt, die gut funktionieren. Ich bin nicht darauf hindeutet, diesen Produktionscode ist, aber ich wollte Ihnen den Code zeigen, dass eine Anfrage einmal pro Sekunde macht das gelingt:
/*Required modules
npm install request //used because it supports HTTPS
npm install cheerio
*/
var request = require('request');
var cheerio = require('cheerio');
var ids = [
"16286",
"16296",
"16284",
"15563",
"15964",
"15123",
"15592",
"868",
"15626",
"15627",
"339",
"350"
];
var print = "";
var count = 0;
ids.forEach(function(id, x) {
setTimeout(() => {
request({uri: "https://www.futbin.com" + "/17/player/"+id, gzip: true}, function(error, response, full) {
if (error) {
console.log(error);
} else {
let $ = cheerio.load(full);
var bins = $('.lowest_bin_next_tr');
console.log(`header data [${id}]`, `"${$('.player_header').text().trim()}"`);
var header = $('.player_header').text().trim().split("-");
if(header != '') {
print += header[1].trim() + ", " + header[0] + "OVR " + $('.pcdisplay-pos').text().trim() + "\r\n";
print += "**PS4:** " + $('#pslbin').text().slice(0, -1) + ", " + bins.eq(0).text().split("d")[1].trim() + ", " + bins.eq(1).text().split("d")[1].trim() + " " + $('.lowest_bin_updated_tr_ps4').text().trim().substring(8, this.length) + "\r\n";
print += "**XBOX:** " + $('#xboxlbin').text().slice(0, -1) + ", " + bins.eq(4).text().split("d")[1].trim() + ", " + bins.eq(5).text().split("d")[1].trim() + " " + $('.lowest_bin_updated_tr_xb1').text().trim().substring(8, this.length) + "\r\n"; "\r\n";
}
if(++count == ids.length)
callback(print);
}
});
}, x * 1000);
});
function callback(data) {
console.log(data);
}
FYI, es funktioniert auch, wenn ich sie (eine Anfrage im Flug streng serialisiert bei zur Zeit) wie folgt aus:
/*Required modules
npm install request //used because it supports HTTPS
npm install cheerio
*/
var Promise = require('bluebird');
var request = Promise.promisify(require('request'), {multiArgs: true});
var cheerio = require('cheerio');
var ids = [
"16286",
"16296",
"16284",
"15563",
"15964",
"15123",
"15592",
"868",
"15626",
"15627",
"339",
"350"
];
Promise.mapSeries(ids, function(id) {
return request({uri: "https://www.futbin.com" + "/17/player/"+id, gzip: true}).then(function(data) {
var response = data[0];
var full = data[1];
let $ = cheerio.load(full);
var bins = $('.lowest_bin_next_tr');
console.log(`header data [${id}]`, `"${$('.player_header').text().trim()}"`);
var header = $('.player_header').text().trim().split("-");
let print = "";
if(header != '') {
print += header[1].trim() + ", " + header[0] + "OVR " + $('.pcdisplay-pos').text().trim() + "\r\n";
print += "**PS4:** " + $('#pslbin').text().slice(0, -1) + ", " + bins.eq(0).text().split("d")[1].trim() + ", " + bins.eq(1).text().split("d")[1].trim() + " " + $('.lowest_bin_updated_tr_ps4').text().trim().substring(8, this.length) + "\r\n";
print += "**XBOX:** " + $('#xboxlbin').text().slice(0, -1) + ", " + bins.eq(4).text().split("d")[1].trim() + ", " + bins.eq(5).text().split("d")[1].trim() + " " + $('.lowest_bin_updated_tr_xb1').text().trim().substring(8, this.length) + "\r\n"; "\r\n";
}
return print;
});
}).then(function(results) {
console.log(results);
});
versuchen, den Fehler console.log und prüfen, warum werden die Anforderungen –
der Host-Server andernfalls könnte Ihr Schnellfeuer 12 Anfragen als Denial-of-Service oder Rate Limiting Verletzung sehen. Sie müssen sich die genauen Fehler und möglicherweise die Netzwerk-Trace ansehen, um genau zu sehen, was die Fehler sind. Sie möchten vielleicht auch wissen, dass Ihre Anfragen in beliebiger Reihenfolge ankommen können, so dass die Reihenfolge, in der Sie sie in der 'print' -Variable erhalten, zufällig sein kann (abhängig vom spezifischen Verhalten des Host-Servers). – jfriend00