2012-10-24 2 views
2

저는 Zombie.js를 알아 내려고하고 있습니다.Zombie.js 브라우저가 전체 HTML을 반환하지 않습니까?

나는이 스크립트가 : 그냥 페이지를 방문하고 HTML을 기록

var Browser = require("zombie"); 
var assert = require("assert"); 

Browser.visit("http://web.mit.edu", function (e,browser) { 
    console.log(browser.html()); 
}); 

을,하지만 난 보통의 브라우저에서 무엇을 얻을 소스 파일과 일치하지 않습니다 HTML을 얻고있다.

Zombie.js 출력 :

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <title>MIT - Massachusetts Institute of Technology</title> 
    <meta name="keywords" content="Massachusetts Institute of Technology, MIT" /> 
    <meta name="description" content="MIT is devoted to the advancement of knowledge and education of students in areas that contribute to or prosper in an environment of science and technology." /> 
    <meta name="robots" content="index,follow,noodp,noydir" /> 
    <meta name="allow-search" content="yes" /> 
    <meta name="language" content="en" /> 
    <meta name="distribution" content="global" /> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    <meta http-equiv="Expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> 
    <meta http-equiv="Pragma" content="no-cache" /> 
    <meta http-equiv="cache-control" content="no-store" /> 
    <link rel="canonical" href="http://web.mit.edu" /> 
    <link rel="image_src" href="http://web.mit.edu/img/MIT_logo.gif" /> 
    <link rel="search" type="application/opensearchdescription+xml" href="http://web.mit.edu/opensearch.xml" title="MIT - Massachusetts Institute of Technology" /> 
    <link href="https://plus.google.com/104984516469461796485/" rel="publisher" /> 
    <!-- icons --> 
    <link rel="shortcut icon" href="/favicon.ico" /> 
    <!-- rss --> 
    <link rel="alternate" type="application/rss+xml" title="MIT - Home Page News" href="http://feeds.feedburner.com/mit/news-homepage" /> 
    <!-- style sheets - global --> 
    <link href="styles/style3536.css" rel="stylesheet" type="text/css" media="all" /> 
    <script src="http://dnn506yrbagrg.cloudfront.net/pages/scripts/0011/6778.js" type="text/javascript"></script> 
    <script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 
    <script type="text/javascript"> 
     var _gaq = _gaq || []; 
     _gaq.push(
      ['_setAccount', 'UA-1592615-11'], 
      ['_trackPageview','/'], 
      ['rollup._setAccount', 'UA-31439876-1'], 
      ['rollup._trackPageview', '/mit/www/'] 
     ); 
     (function() { 
     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
     ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
     })(); 
    </script> 
    <style type="text/css" media="screen">#flashcontent {visibility:hidden}#flashcontent {visibility:visible}</style> 
    </head> 
    <body> 
    <a href="http://events.mit.edu/">Tuesday, October 23, 2012</a> 
    </body> 
</html> 

그리고 실제 소스가 정말 긴, 무슨 일이야 http://web.mit.edu

에서 확인해?

답변

2

당신이 좀비의 소스 코드를 비교하는 assert를 사용하는 경우의 당신이 있기 때문에 다음과 같은 사항의 오류가 발생합니다 결과 : 모든 browser.html()

먼저 당신에게 문서 타입을 제공하지 않습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

두 번째 더 중요 MIT는 하나의 초 시간 제한 후로드 된 자바 스크립트 파일을 사용

<script type="text/javascript"> 
    setTimeout(function(){var a=document.createElement("script"); 
    var b=document.getElementsByTagName('script')[0]; 
    a.src=document.location.protocol+"//dnn506yrbagrg.cloudfront.net/pages/scripts/0011/6778.js"; 
    a.async=true;a.type="text/javascript";b.parentNode.insertBefore(a,b)}, 1); 
</script> 

또는 비동기

var _gaq = _gaq || []; 
_gaq.push(
    ['_setAccount', 'UA-1592615-11'], 
    ['_trackPageview','/'], 
    ['rollup._setAccount', 'UA-31439876-1'], 
    ['rollup._trackPageview', '/mit/www/'] 
); 
(function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 

소스 코드는 반면를로드하는 당신에게 코드를 보여줍니다 zombie는 결과를 알려줍니다.

<script src="http://dnn506yrbagrg.cloudfront.net/pages/scripts/0011/6778.js" type="text/javascript"></script> 
그들은 더 DOM과 좀비 변경 될 수 있습니다 그 스크립트의 내용에 따라 617,451,515,

<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 

더욱 편차를 보여줍니다. 불행히도 나는 대안을 모르고있다.

관련 문제