Альтернатива JSDom с полной поддержкой Sizzle?

Для небольшого объема у меня есть приложение для парсинга, которое я запускаю в cloudfoundry. Из-за проблемы Contextify, обсуждаемой здесь, я не могу использовать jsdom для выполнения это.

Чтобы обойти эту проблему, я начал заменять jsdom на Cheerio, однако теперь я понял, что это не полностью поддерживать селекторы Sizzle, которые мне нужно использовать для обработки очищенных данных.

После небольшого исследования я начинаю думать, что наткнулся на кирпичную стену - есть ли другой способ обойти эту проблему?

Спасибо!


person Stevie    schedule 06.10.2012    source источник


Ответы (1)


извините за задержку по этому поводу. Теперь вы можете успешно установить JSDOM в Cloudfoundry, однако некоторые функции недоступны. Создание окна браузера, например, для использования jQuery, невозможно. Однако вы можете создать документ jsdom.

Учитывая следующий пример;

  var http = require('http');
  var util = require('util');
  var jsdom = require("jsdom");

  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});

    res.write("JSDom object;");
    createDocAndQuery(res);

    res.write("\nNumber of node.js releases = ");
    getLinkCount(res);

  }).listen(3000);

  function createDocAndQuery(response) {
    var doc = jsdom.jsdom("<html><body></body></html>", jsdom.level(1, "core"));
    response.write(util.inspect(doc));
  }

  function getLinkCount(response) {
    jsdom.env(
      "http://nodejs.org/dist/",
      ["http://code.jquery.com/jquery.js"],
      function (errors, window) {
        response.end ("" + window.$("a").length)
      }
    );
  }

Первая часть этого работает на CloudFoundry.com, однако вторая часть дает сбой при создании объекта окна.

person Dan Higham    schedule 23.10.2012