我有些奇怪的东西。 我想在网页上获得一些信息( 例如这个 )。 当我从当地进行测试时,没有问题,我得到了我想要的所有细节。
但是当我将脚本推送到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属性。 还有“古典”号召:
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和我的本地。
在此先感谢大家和任何想法!
I've something really weird. I want to get some info on a webpage (this one for example). When I test from my local, no problem, I get all the details I want.
But when I push my script to heroku, jsom provides me only a completely blank page without any DOM insisde, so no data. I don't understand why.
Here is the main parts of 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": { } }And here is how I create the request from 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. **/ } });I have tried with or without the useragent property. And trid too with the "classical" call :
jsdom.env('https://www.manomano.fr/perceuse/perceuse-visseuse-makita-18-v-li-ion-4-ah-d-13-mm-90249', [same options], [sameCallback]);Any idea on what's happening ? Off course, there is no more info in logs on heroku... I'm completely stuck on this problem for the moment. I do similar thinks in the same app (really the same, not just a clone/fork) with other websites and no problem, no differences between prod heroku and my local.
Thanks in advance to everybody and any idea !
最满意答案
有关站点阻止机器人,JSDom无罪。 对不起打扰 ;)
The site concerned block robots so, JSDom is not guilty. Sorry for disturbing ;)
更多推荐
发布评论