2011-03-30 227 views
6

我正在開發一個工具,需要從第三方服務器下載一個網頁,執行它作爲瀏覽器然後解析HTML。我所苦惱的是,在所有的javascript被執行並且DOM被修改之後,該工具需要解析HTML。我正在嘗試使用PhantomJS來達到這個目的,它適用於一小段代碼(只是一個帶有外部javascript的小型html文檔,它爲DOM添加了一些節點),但是當我對一個真實站點(http://www.dba.dk/)做同樣的處理時,我在經過js代碼完成的所有修改後,沒有獲得最終的HTML。PhantomJS並獲得修改DOM

我真的需要幫助,因爲我堅持了一個多星期。

我PhantomJS代碼很簡單:

if (phantom.state.length === 0) { 
    if (phantom.args.length === 0) { 
      console.log('Usage: test.js <some URL>'); 
      phantom.exit(); 
    } else { 
      var address = phantom.args[0]; 
      phantom.state = Date.now().toString(); 
      phantom.viewportSize = { width: 1280, height: 800 }; 
      phantom.open(address); 
    } 
} else { 
    var elapsed = Date.now() - new Date().setTime(phantom.state); 
    if (phantom.loadStatus === 'success') { 
      if (!first_time) { 
        var first_time = true; 
        if (!document.addEventListener) { 
          console.log('Not SUPPORTED!'); 
        } 
        phantom.render('result.png'); 
        var markup = document.documentElement.innerHTML; 
        console.log(markup); 
        phantom.exit(); 
      } 
    } else { 
      console.log('FAIL to load the address'); 
      phantom.exit(); 
    } 
} 

的HTML轉儲到控制檯中不包含的內容生成動態

回答

3

的問題是Flash插件。網頁正在檢測它的缺席。一旦它被正確加載,問題就沒有了