Ich habe Probleme mit den Selektoren, die für Cheerio.js verfügbar sind, die ich auf meinem Knotenserver verwende. Der Kern basiert angeblich auf JQuery, aber ich kann es mit der gleichen Auswahl, die ich mit nativem JQuery tun würde, nicht wirklich zum Laufen bringen.
few cells here
These are the rows I want
< /code>
Da es auf der Seite zwei Tabellen mit der Klasse "Listing" gibt, kann ich das nicht direkt auswählen, daher brauche ich die Referenz auf die DIV mit der Klasse "Test". Die Auswahl, die ich mit JQuery ausführen kann, wäre so etwas wie: < /p>
$('div.test tbody tr')
< /code>
Aber das funktioniert nicht mit Cheerio. Wenn ich $ ('div [class = "test"] tr') ausführe, bekomme ich alle Zeilen auf die Tabelle, sogar die Thead -Zeilen, also funktioniert das für mich nicht.// Load the html
var $ = cheerio.load(html, {
normalizeWhitespace: true
});
$('div.tillgodo tbody tr').each(function(){
console.log("Found credited course...");
var children = $(this).children();
var credits = parseFloat($(children[3]).text().replace(',', '.')); // We need to replace comma with a dot since parseFloats only supports dots by design
var row = {
"course" : $(children[1]).text().trim(),
"grade" : null,
"credits" : credits,
"date" : $(children[4]).text()
};
// Push course to JSON object
console.log("Push course to object...");
console.log("------------------------------------------\n");
data.credited_courses.push(row);
data.credited_courses_credits += parseFloat(credits);
});
Der folgende Code funktioniert für die erste Tabelle:
$('tr.incomplete.course').each(function(i, tr){
console.log("This is course nr: " + parseInt(course_count+1));
console.log("Found incompleted course...");
var children = $(this).children();
var credits = parseFloat($(children[2]).text().replace(',', '.').match(/(\+|-)?((\d+(\.\d+)?)|(\.\d+))/)[0]); // Filter out any parentheses and odd characters
var row = {
"course" : $(children[1]).text(),
"grade" : $(children[3]).text(),
"credits" : credits,
"date" : $(children[5]).text()
};
// Sum the total amount of credits for all courses
console.log("Add credits to incompleted_credits...");
data.incompleted_credits += credits;
console.log("Push course to object...");
data.incompleted_courses.push(row);
course_count++;
});
< /code>
Wenn ich sage, dass es nicht funktioniert, bedeutet das, dass das von mir zurückgegebene JSON -Objekt nicht die erwarteten Zeilen aus der zweiten Tabelle enthält.
Tillgodoräknanden
Kurskod
Kursnamn
Beslutsfattare
Poäng
Datum
Summa tillgodoräknade poäng:
10,5
Valfria kurser
xxx
10,5
2013-06-03
Ich habe Probleme mit den Selektoren, die für Cheerio.js verfügbar sind, die ich auf meinem Knotenserver verwende. Der Kern basiert angeblich auf JQuery, aber ich kann es mit der gleichen Auswahl, die ich mit nativem JQuery tun würde, nicht wirklich zum Laufen bringen.[code]
few cells here
These are the rows I want
< /code> Da es auf der Seite zwei Tabellen mit der Klasse "Listing" gibt, kann ich das nicht direkt auswählen, daher brauche ich die Referenz auf die DIV mit der Klasse "Test". Die Auswahl, die ich mit JQuery ausführen kann, wäre so etwas wie: < /p> $('div.test tbody tr') < /code> Aber das funktioniert nicht mit Cheerio. Wenn ich $ ('div [class = "test"] tr') ausführe, bekomme ich alle Zeilen auf die Tabelle, sogar die Thead -Zeilen, also funktioniert das für mich nicht.// Load the html var $ = cheerio.load(html, { normalizeWhitespace: true });
$('div.tillgodo tbody tr').each(function(){ console.log("Found credited course..."); var children = $(this).children(); var credits = parseFloat($(children[3]).text().replace(',', '.')); // We need to replace comma with a dot since parseFloats only supports dots by design
// Push course to JSON object console.log("Push course to object..."); console.log("------------------------------------------\n"); data.credited_courses.push(row); data.credited_courses_credits += parseFloat(credits); }); [/code] Der folgende Code funktioniert für die [b] erste [/b] Tabelle: [code]$('tr.incomplete.course').each(function(i, tr){ console.log("This is course nr: " + parseInt(course_count+1)); console.log("Found incompleted course..."); var children = $(this).children(); var credits = parseFloat($(children[2]).text().replace(',', '.').match(/(\+|-)?((\d+(\.\d+)?)|(\.\d+))/)[0]); // Filter out any parentheses and odd characters var row = { "course" : $(children[1]).text(), "grade" : $(children[3]).text(), "credits" : credits, "date" : $(children[5]).text() };
// Sum the total amount of credits for all courses console.log("Add credits to incompleted_credits..."); data.incompleted_credits += credits;
console.log("Push course to object..."); data.incompleted_courses.push(row); course_count++; }); < /code> Wenn ich sage, dass es nicht funktioniert, bedeutet das, dass das von mir zurückgegebene JSON -Objekt nicht die erwarteten Zeilen aus der zweiten Tabelle enthält. Tillgodoräknanden
Ich habe alles versucht, von der Erstellung von Formel bis zum Versuch, Kriterienbuilder zu verwenden, um eine One -Tabelle mit der vielen Tabelle zu kombinieren. Warum? Ich muss die Tabelle eins...
Ich versuche, die Pitching-Statistiken dieser URL zu extrahieren und dann den Datenrahmen in einer CSV-Datei zu speichern.
/ARI202204070.shtml
Mein aktueller Code ist unten (Python 3.9.7)
_URL =...
unten ist meine Problemanweisung:
Ich möchte die folgenden Dinge verwenden, die mit Schleife (oder für Schleife )
generieren.
c top skip
1 1000 0
2 1001 2000 --- added 999
3 2001 3000 --- added...