Как очистить страницы с динамическим контентом с помощью node.js?

Я пытаюсь очистить сайт, но я не получаю некоторые элементы, потому что эти элементы динамически создаются.

Я использую cheerio в node.js, а мой код ниже.

var request = require('request'); var cheerio = require('cheerio'); var url = "http://www.bdtong.co.kr/index.php?c_category=C02"; request(url, function (err, res, html) { var $ = cheerio.load(html); $('.listMain > li').each(function () { console.log($(this).find('a').attr('href')); }); }); 

Этот код возвращает пустой ответ, потому что при загрузке страницы

    пуст.

    Содержимое еще не добавлено.

    Как я могу получить эти элементы, используя node.js? Как очистить страницы с динамическим контентом?

    Ну вот;

     var phantom = require('phantom'); phantom.create(function (ph) { ph.createPage(function (page) { var url = "http://www.bdtong.co.kr/index.php?c_category=C02"; page.open(url, function() { page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { page.evaluate(function() { $('.listMain > li').each(function () { console.log($(this).find('a').attr('href')); }); }, function(){ ph.exit() }); }); }); }); }); 

    Используйте новый рентгеновский модуль модуля npm с помощью флеш-диска с флеш -памятью .

    Примеры на страницах выше, но вот как сделать динамическое выскабливание:

     var phantom = require('x-ray-phantom'); var Xray = require('x-ray'); var x = Xray() .driver(phantom()); x('http://google.com', 'title')(function(err, str) { if (err) return done(err); assert.equal('Google', str); done(); }) 

    Проверьте GoogleChrome / puppeteer

    Безглавой интерфейс Chrome Node

    Это делает соскабливание довольно тривиальным. Следующий пример очистит заголовок на сайте npmjs.com (при .npm-expansions )

     const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://www.npmjs.com/'); const textContent = await page.evaluate(() => { return document.querySelector('.npm-expansions').textContent }); console.log(textContent); /* No Problem Mate */ browser.close(); })(); 

    evaluate позволит провести проверку динамического элемента, так как это запустит скрипты на странице.

Давайте будем гением компьютера.