节点请求得到werid返回值,导致jsdom崩溃

时间:2014-05-22 19:50:59

标签: javascript node.js web-scraping httprequest jsdom

我正在使用请求模块从网站列表中获取数据,然后使用jsdom获取DOM并执行一些操作。

有些网站正在返回奇怪的内容(不是html)。

werid code returned from a website using request module

然后将此图像中的数据传递给jsdom以获取DOM,但它传递了此错误:

TypeError: Cannot read property '$' of undefined

我不确定为什么会发生这种情况,我查看了网站,它生成的HTML并不是截图中的乱码!!

CODE:

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();
                }
            });

1 个答案:

答案 0 :(得分:1)

内容以gzip状态返回。 Use zlib to unzip it

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);
    }
  });
});