Обновление 2
Следующий код Puppeteer ждет 3000ms
, прежде чем извлечь текст. Вы можете обновить эту задержку вручную или настроить функцию отслеживания изменений HTML, как описано в этом ответе .
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('http://localhost:8000',{ waitUntil: 'domcontentloaded' });
await page.waitFor(3000);
console.log(await page.$eval('#graphDD3', el => el.innerText));
await browser.close();
})();
В качестве примечания можно использовать следующее снимаем время для изменения текста и затем используем это значение, чтобы обеспечить соответствующую задержку для метода .waitFor()
. Но не используйте это бесконечное l oop без учета всех последствий.
var startTime = new Date()
while(true){
const val = await page.$eval('#graphDD3', el => el.innerText);
if(val != '0'){
console.log(val);
break;
}
}
console.log(new Date - startTime);
Обновление 1
В вашем коде нет синтаксической ошибки, поэтому проблема, скорее всего, связана с отображением содержимого JavaScript. Чтобы получить правильный результат в таких случаях, вам придется визуализировать страницу, используя браузер без заголовка, такой как puppeteer
, а затем вы можете извлечь информацию.
Оригинальный ответ
.text()
- это метод, а не свойство. Таким образом, код должен быть:
let rate = $('#graphDD3');
console.log(rate.text().trim())