JSDom 在 Heroku 和本地分析不同
JSDom analyze differently on Heroku and in local
我有一件很奇怪的事。我想在网页上获取一些信息 (this one for example)。当我从本地测试时,没问题,我得到了我想要的所有细节。
但是当我将我的脚本推送到 heroku 时,jsom 只提供给我一个完全空白的页面,没有任何 DOM 插入,所以没有数据。我不明白为什么。
这里是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.
**/
}
});
我试过使用或不使用用户代理属性。也可以使用 "classical" 调用 :
jsdom.env('https://www.manomano.fr/perceuse/perceuse-visseuse-makita-18-v-li-ion-4-ah-d-13-mm-90249', [same options], [sameCallback]);
知道发生了什么吗?当然,heroku 的日志中没有更多信息......我目前完全陷入这个问题。我在与其他网站的同一个应用程序(真的一样,不仅仅是 clone/fork)中也有类似的想法,没问题,prod heroku 和我本地的没有区别。
提前感谢大家和任何想法!
有关网站如此屏蔽机器人,JSDom无罪。抱歉打扰了 ;)
我有一件很奇怪的事。我想在网页上获取一些信息 (this one for example)。当我从本地测试时,没问题,我得到了我想要的所有细节。
但是当我将我的脚本推送到 heroku 时,jsom 只提供给我一个完全空白的页面,没有任何 DOM 插入,所以没有数据。我不明白为什么。
这里是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.
**/
}
});
我试过使用或不使用用户代理属性。也可以使用 "classical" 调用 :
jsdom.env('https://www.manomano.fr/perceuse/perceuse-visseuse-makita-18-v-li-ion-4-ah-d-13-mm-90249', [same options], [sameCallback]);
知道发生了什么吗?当然,heroku 的日志中没有更多信息......我目前完全陷入这个问题。我在与其他网站的同一个应用程序(真的一样,不仅仅是 clone/fork)中也有类似的想法,没问题,prod heroku 和我本地的没有区别。
提前感谢大家和任何想法!
有关网站如此屏蔽机器人,JSDom无罪。抱歉打扰了 ;)