К сожалению, необходимое значение на целевой странице не будет обновляться в реальном времени, поэтому нам придется переместить интервал из обратного вызова page.open
в основную область и просто обновлять страницу так часто, как это необходимо:
var page = require('webpage').create();
var last_value = -1;
setInterval(function() {
page.open('http://www.aastocks.com/en/stocks/market/bmpfutures.aspx', function(status) {
var value = page.evaluate(function() {
return document.getElementsByClassName('font26 bold cls ff-arial')[0].innerText
})
if (value != last_value) {
console.log("Value as been updated to " + value)
last_value = value;
}
});
}, 3000)
Очевидно, что лучше не заходить на целевой сайт слишком часто, также вы должны добавить действительный пользовательский агент, установить реалистичное разрешение и повернуть IP-адреса.
приписка
Только что посмотрел на источник страницы и оказалось, что вам даже не нужен PhantomJS, так как <div class="font26 bold cls ff-arial">26,696</div>
прямо в HTML. Вы можете получить его на любом скриптовом серверном языке.
ОБНОВЛЕНИЕ при миграции узла
Вы почти все сделали правильно! Нюанс был в том, чтобы составить селектор. Поскольку все эти классы принадлежат одному элементу, их нужно записать так:
const needle = require('needle');
const cheerio = require('cheerio')
setInterval(function(){
needle.get('http://www.aastocks.com/en/stocks/market/bmpfutures.aspx',
function(error, response) {
if (!error && response.statusCode == 200){
const $ = cheerio.load(response.body)
var value = $('.font26.bold.cls.ff-arial').html().trim()
console.log(value)
}
})
}, 1000)