У меня возникли проблемы с использованием селекторов, доступных для Cheerio.js, который я использую на своем сервере Node. Ядро предположительно основано на jQuery, однако я не могу заставить его работать, используя тот же выбор, что и при использовании встроенного jQuery.
У меня есть DOM, который выглядит примерно так:
У меня есть DOM, который выглядит примерно так:
п>
few cells here
These are the rows I want
Поскольку на странице есть две таблицы с классом «листинг», я не могу выбрать их напрямую, поэтому мне нужна ссылка на div с классом «тест». Выбор, который я могу выполнить с помощью jQuery, будет примерно таким:
$('div.test tbody tr')
Но это не работает с Cheerio. Если я запущу $('div[class="test"] tr') я получу все строки таблицы, даже заголовочные, так что у меня это не работает.
Есть предположения?
Обновление:
Это реальный код, который я выполняю (не работает):
// 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);
});
Следующий код работает для первой таблицы:
$('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++;
});
Когда я говорю, что это не работает, это означает, что возвращаемый мной объект JSON не содержит ожидаемых строк из второй таблицы.
Обновление 2
Таблица, которую я хочу очистить:
Tillgodoräknanden
Kurskod
Kursnamn
Beslutsfattare
Poäng
Datum
Summa tillgodoräknade poäng:
10,5
Valfria kurser
xxx
10,5
2013-06-03
Подробнее здесь: https://stackoverflow.com/questions/283 ... cheerio-js
Перебор TR в таблице с помощью Cheerio.js ⇐ Jquery
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Cheerio возвращает неопределенное значение при вызове .each() для элементов
Anonymous » » в форуме Jquery - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-