Парсинг веб-сайта, созданного с помощью JavaScript, с помощью Node.js

Когда я анализирую статическую HTML-страницу, мое приложение node.js работает хорошо. Однако, когда URL-адрес представляет собой страницу, созданную с помощью JavaScript, приложение не работает. Как я могу очистить веб-страницу, созданную с помощью JavaScript?

Мой app.js

var express = require('express'),
  fs = require('fs'),
  request = require('request'),
  cheerio = require('cheerio'),
  app = express();

app.get('/scrape', function( req, res ) {

  url = 'http://www.apache.org/';

  request( url, function( error, response, html ) {
    if( !error ) {
      var $ = cheerio.load(html);

      var title, release, rating;
      var json = { title : "" };

      $('body').filter(function() {
        var data = $(this);
        title = data.find('.panel-title').text();
        json.title = title;
      })
    }

    fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err) {
      console.log( 'File successfully written! - Check your project directory for the output.json file' );
    });

    // Finally, we'll just send out a message to the browser reminding you that this app does not have a UI.
    res.send( 'Check your console!' );
  });
});

app.listen('8081');
console.log('Magic happens on port 8081');
exports = module.exports = app;

person Sunrise    schedule 27.05.2015    source источник
comment
возможный дубликат Выполнение очищенного JavaScript с помощью cheerio   -  person chedabob    schedule 27.05.2015


Ответы (1)


Cheerio не будет выполнять javascript на странице, так как он просто создан для разбора простого HTML.

Я бы предложил другой подход, используя что-то вроде PhantomJS: http://phantomjs.org/

person chedabob    schedule 27.05.2015
comment
Я работаю над проектом и сталкиваюсь с той же проблемой. Я искал phantom.js, чтобы решить эту проблему. Где-нибудь вы можете указать мне? - person Zach Harriott; 29.05.2017