JSDom在Heroku和本地分析不同

时间:2017-03-16 23:00:26

标签: node.js heroku jsdom

我真的很奇怪。我想在网页上获取一些信息(this one for example)。当我从当地测试时没问题,我得到了我想要的所有细节。

但是当我将我的脚本推送到heroku时,jsom只为我提供了一个没有任何DOM insisde的完全空白页面,所以没有数据。我不明白为什么。

以下是package.json的主要部分:

{
  "engines": {
    "node": "5.8.0",
    "npm": "3.7.3"
  },
  "dependencies": {
    "co": "4.6.0",
    "co-body": "2.0.0",
    "co-pg": "1.3.1",
    "jsdom": "9.12.0",
    "koa": "0.21.0",
    "koa-bodyparser": "2.0.0",
    "koa-logger": "1.3.1"
  },
  "devDependencies": {
  }
}

以下是我如何从jsdom创建请求:

jsdom.env({
    url: 'https://www.manomano.fr/perceuse/perceuse-visseuse-makita-18-v-li-ion-4-ah-d-13-mm-90249',
    userAgent : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36',
    scripts: [],
    done: function (err, window) {
        // err is null, on local or on prod on Heroku
        /**
          * Concerning window :
          * 
          * In production 
          * window.document.querySelector('body').innerHTML === ''
          * 
          * In local
          * I got the whole HTML as 
          * I can have navigating with my browser.
         **/
    }
});

我尝试过使用或不使用useragent属性。并使用" classic"打电话:

jsdom.env('https://www.manomano.fr/perceuse/perceuse-visseuse-makita-18-v-li-ion-4-ah-d-13-mm-90249', [same options], [sameCallback]);

知道发生了什么?当然,在heroku的日志中没有更多的信息.​​..我暂时完全坚持这个问题。我做类似的想法在同一个应用程序(真的相同,不只是一个克隆/分叉)与其他网站没有问题,prod heroku和我的本地没有区别。

提前感谢所有人和任何想法!

1 个答案:

答案 0 :(得分:0)

该网站涉及阻止机器人,所以,JSDom无罪。抱歉令人不安;)