2012-01-05 57 views
2

下面的簡單腳本返回一堆垃圾。它適用於大多數的網站,但不威廉希爾: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()); 
}); 
}); 

與節點運行

輸出:

SJꪙRUݒkf6Efr2 Riz ^0 X {^a yp p Ή ` ( S]- 'N 8Q /ݻU;?݇ׯ榮ٲ> -3 GEE,mFMIQ2 ڊZGOJ^SC〜gJO緹öݎPETN; VV DtvJnJ8' 햷r v: m J Z nh ] Z 。{Z Ӳl B' .¶D 〜$n/U 「zNi」 nj\ 00_I \ 00 \ SOE8 {「米; H,oQy; a[ c q D /|:: ; Z!}/w h < % AK = -a〜」

(實際產量更長)

任何人都知道爲什麼發生這種情況,具體爲什麼會發生在我其實是想湊的唯一網站? ??

感謝

+0

檢查標題;你可能會得到DEFLATEd或gzip壓縮的數據。 – You 2012-01-05 12:40:06

回答

0

相同的代碼適用於其他網站(也用gzip回覆),所以它不是一個代碼問題。

我的猜測是,該網站正在檢測到您沒有運行瀏覽器並針對數據提取進行辯護。

+1

通過發送二進制響應防禦數據提取?不太可能。 – pguardiario 2012-01-06 00:46:54

+0

我也認爲這是不可能的。我相當確定,響應是與我下載的頁面相同的壓縮文件,我只需要一種解壓縮的方式。 – 2012-01-18 15:02:01