Мне нужно сделать простой веб-скребок, чтобы получить базовую информацию об Афинской фондовой бирже в режиме реального времени. Мое оружие выбора - Node.js и, более конкретно, модуль cheerio.Веб-скребок с node.js/cheerio - невозможно получить <span> текст
Информация, которую я хочу захватить, представлена на веб-сайте как текст внутри некоторых элементов. Эти элементы вложены внутри другого. Примером может служить следующее:
<span id="tickerGeneralIndex" class="style3red">
<span class="percentagedelta">
-0,50%
</span>
</span>
В этом случае данные, которые я хочу извлечь, составляют «-0,50%».
Код я написал это:
var request = require('request'),
cheerio = require('cheerio');
request('http://www.euro2day.gr/AseRealTime.aspx', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var span = $('span.percentagedelta').text();
console.log(span);
}
});
Этот код не дает желаемых результатов. При запуске он регистрирует одну пустую строку в консоли.
Я попытался изменить мой код, как это для целей тестирования:
var request = require('request'),
cheerio = require('cheerio');
request('http://www.euro2day.gr/AseRealTime.aspx', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var span = $('span.percentagedelta').attr('class');
console.log(span);
}
});
Таким образом, я получаю «percentagedelta» в консоли. Это правильно, поскольку я попросил получить класс элемента. Конечно, это не то, что я хотел. Я просто сделал это, чтобы выяснить, правильно ли загружена переменная «span».
Я начинаю подозревать, что это имеет какое-то отношение к символам в тексте. Возможно ли, что проблема с кодировкой виновата? И если да, как я могу это исправить?
@ Rax.Wunter Похоже, вы правы. Не могли бы вы рассказать о своем первом предложении? Если нет, я поеду с опцией JSON. В любом случае, спасибо заранее! – dsljanus
Нет возможности получить нужные данные, запрашивая веб-страницу по сценарию, поскольку он не выполняет javascript. Вы можете пойти и использовать PhantomJs, например, он может запускать javascript на загруженной странице, но опция JSON намного проще. –
Вы правы. Я потратил много времени, пытаясь научиться Cheerio и не собираюсь изучать Phantom (что нелегко из того, что я слышу). Итак ... JSON это тогда. – dsljanus