下面的简单脚本会返回一堆垃圾。它适用于大多数网站,但不适用于威廉希尔:
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());
});
});
使用节点
运行输出:
SJꪙRUݒkf6Efr2Riz ^ 0X {^ayppΉ`(S] - 'N8q /ݻ U;݇ׯ荣ٲ&GT -3 GEE,mFMIQ2ڊZGOJ ^ SC〜gJO缇öݎPETN; vvDtvJnJ8' 햷RV : m J Z nh ] Z 。{Z Ӳl B' .¶D ~$n / u“ z倪 “nj\ 00_I \ 00 \ SOE8 {” 米; H,oQy;一个[ ?CQD띊/ |:;?!Z} / WےH<% AK = -a〜'
(实际输出更长)
任何人都知道为什么会发生这种情况,特别是为什么它会发生在我真正想要刮掉的唯一网站上?
由于
答案 0 :(得分:1)
我很久以前就放弃了这种方法,但如果有人有兴趣,我会收到一个zombie.js开发者的回复。
https://github.com/assaf/zombie/issues/251#issuecomment-5969175
他说:“Zombie现在会发送accept-encoding标头,表明它不支持gzip。”
感谢所有对此进行调查的人。
答案 1 :(得分:0)
相同的代码适用于其他网站(也使用gzip进行回复),因此这不是代码问题。
我的猜测是该网站检测到您没有运行浏览器并防范数据提取。