У меня есть проблемы с использованием селекторов, которые доступны для Cheerio.js, которые я использую на своем сервере узлов. Ядро предположительно основано на jQuery, однако я не могу заставить его работать, используя тот же выбор, что и с нативным jQuery.
few cells here
These are the rows I want
< /code>
Поскольку на странице есть две таблицы с классом «Список». Я не могу выбрать это напрямую, поэтому мне нужна ссылка на Div с классом «Тест». Выбор, который я могу запустить с jQuery, был бы чем -то вроде: < /p>
$('div.test tbody tr')
< /code>
Но это не работает с Cheerio. Если я запускаю $ ('div [class = "test"] tr'), я получаю все строки на таблице, даже ряды Thead, так что это не работает для меня. < /P>
Есть какие -либо предположения?// 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);
});
Следующий код работает для таблицы first :
$('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>
Когда я говорю, что это не работает, означает, что объект JSON, который я возвращаю, не имеет ожидаемых строк из второй таблицы.
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
Программирование на jquery
1751249095
Anonymous
У меня есть проблемы с использованием селекторов, которые доступны для Cheerio.js, которые я использую на своем сервере узлов. Ядро предположительно основано на jQuery, однако я не могу заставить его работать, используя тот же выбор, что и с нативным jQuery.
few cells here
These are the rows I want
< /code>
Поскольку на странице есть две таблицы с классом «Список». Я не могу выбрать это напрямую, поэтому мне нужна ссылка на Div с классом «Тест». Выбор, который я могу запустить с jQuery, был бы чем -то вроде: < /p>
$('div.test tbody tr')
< /code>
Но это не работает с Cheerio. Если я запускаю $ ('div [class = "test"] tr'), я получаю все строки на таблице, даже ряды Thead, так что это не работает для меня. < /P>
Есть какие -либо предположения?// 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);
});
Следующий код работает для таблицы [b] first [/b]:
$('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>
Когда я говорю, что это не работает, означает, что объект JSON, который я возвращаю, не имеет ожидаемых строк из второй таблицы.
Tillgodoräknanden
Kurskod
Kursnamn
Beslutsfattare
Poäng
Datum
Summa tillgodoräknade poäng:
10,5
Valfria kurser
xxx
10,5
2013-06-03
Подробнее здесь: [url]https://stackoverflow.com/questions/28387327/iterating-over-tr-in-a-table-with-cheerio-js[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия