Запрос узла получает возвращаемое значение werid, которое приводит к сбою jsdom

Я использую модуль запроса для получения данных из списка веб-сайтов, затем использую jsdom для получения DOM и некоторых других действий.

Некоторые веб-сайты возвращают странный контент (не html).

код werid, возвращенный с веб-сайта с помощью модуля запроса

Затем данные из этого изображения передаются в jsdom для получения DOM, но он передает эту ошибку:

TypeError: Cannot read property '$' of undefined

Я не уверен, почему это происходит, я просматривал веб-сайт, и он генерирует HTML, а не тарабарщину со скриншота!

КОД:

request({
  uri: linkTarget,
  method: "GET",
  timeout: 120000,
  followRedirect: true,
  maxRedirects: 5
}, function(error, response, html){

if (!error) {
    jsdom.env(html,
        ["http://code.jquery.com/jquery.js"],
        function (errors, window) {                         

            var $ = window.$; // Getting Dom

            linkHtml = "";
            $('body script').remove();
            $('body *').each(function() {
                if($(this).text() !== " "){
                    linkHtml = linkHtml+$(this).text();
                }
            });

person Imran Bughio    schedule 22.05.2014    source источник
comment
сделать console.log(errors) в обратном вызове. Вероятно, есть некоторые ошибки, мешающие объекту окна быть действительным.   -  person secretformula    schedule 22.05.2014
comment
@secretformula хорошо, я сделал это в обратном вызове jsdom и получил это в консоли [Error: Path must be a string without null bytes.]   -  person Imran Bughio    schedule 22.05.2014
comment
@secretformula, в чем проблема ... я получаю действительный html из модуля запроса, но для некоторых веб-сайтов он возвращает тарабарщину, подобную той, что на скриншоте   -  person Imran Bughio    schedule 22.05.2014
comment
Как вы получаете html? Это не похоже на html для меня   -  person secretformula    schedule 22.05.2014
comment
Могу я увидеть код, который делает это, пожалуйста?   -  person secretformula    schedule 22.05.2014
comment
Давайте продолжим обсуждение в чате.   -  person Imran Bughio    schedule 23.05.2014


Ответы (1)


Содержимое возвращается в сжатом виде. Используйте zlib, чтобы распаковать его:

var zlib = require('zlib')
  , request = require('request');

request(params, function (err, res, buffer) {
  if (err) { error(err); }
  zlib.gunzip(buffer, function (err, unzipped) {
    var result = unzipped.toString();
    try {
      result = JSON.parse(result);
      cb(result);
    }
    catch (e) {
      error(e);
    }
  });
});
person SomeKittens    schedule 22.05.2014