node.js中的Zombie.js无法抓取某些网站
下面的简单脚本返回一堆垃圾。 它适用于大多数网站,但不威廉山:
var Browser = require("zombie"); var assert = require("assert"); // Load the page from localhost browser = new Browser() browser.visit("http://sports.williamhill.com/bet/en-gb/betting/y/5/et/Football.html", function () { browser.wait(function(){ console.log(browser.html()); }); });
与节点一起运行
输出:
S J ꪙRUݒ kf 6 Efr2 Riz ^ 0 X { ^ a yp p Ή`(S] – 'N8q /ݻU;?݇ׯ荣ٲ> -3 GEE,mFMIQ2ڊZGOJ ^ SC〜gJO缇öݎP ET n;v v D tvJn J 8' 햷r v: m J Z nh ] Z. {ZӲlB'.¶D〜$ N / U “zNi” nj\ 00_I \ 00 \ SOE8 {“米; H,oQy;一个[CQD띊/ | ?:;!Z} / w的ےħ<%AK = -a〜”
(实际产量要长得多)
任何人都知道为什么会发生这种情况,特别是为什么它发生在唯一的网站,我真的想刮?
谢谢
我很久以前就放弃了这个方法,但是如果有人有兴趣的话,我可以从zombie.js开发者那里得到答复。
https://github.com/assaf/zombie/issues/251#issuecomment-5969175
他说:“僵尸现在将发送接受编docker,以表明它不支持gzip。”
谢谢所有看过这个的人。
相同的代码适用于其他网站(也使用gzip回复),所以它不是一个代码问题。
我的猜测是该网站正在检测,您没有运行浏览器,并防止数据提取。
- Socket.io触发两个node.js应用程序之间的事件?
- 无法运行实习生functiontesting。 错误:连接ECONNREFUSED
- 如何使async.each等待.save()完成?
- 自动检测Node.js中的字符编码
- 在浏览器上使用Node.js和Javascript输出Kinect 2
- Facebook Messenger聊天机器人显示“检查您的连接,然后再试一次”。
- 在Nodejs / Express中链接承诺的最佳实践
- 显示对象的原型的节点v0.10.36
- Mongoose,在mongoose.model('core_user')。schema。new mongoose.schema(…)后强制更改模式。