2016-02-29 74 views
0

解析網站的內容時出現問題。 這是一個「數據存儲」站點(網絡文檔),從中我需要數據來生成一些配置。JAVA:從JS數據表填充的HTML文件解析值

無論如何。 我連接到HttpURLConnection的頁面沒有任何問題。 將網站讀入字符串並使用JSoup解析它。

當打開瀏覽器中的網頁我獲得以下元素:

<input type="text" name="b2" value="XXXXX" size="6" onfocus="return sbnrSel()" autocomplete="OFF" onkeyup="searchSuggest(this.id,'b2sel','getSTG?b2='+this.value,1)" onclick="document.getElementById('b2sel').style.display='none'" id="b2" class="muss" /> 

當尋找到我的字符串,我覺得以下元素:

<input type="text" name="b2" size="6" onfocus="return sbnrSel()" autocomplete="OFF" onkeyup="searchSuggest(this.id,'b2sel','getSTG?b2='+this.value,1)" onclick="document.getElementById('b2sel').style.display='none'" id="b2" class="muss" /> 

我想分析的值(在這種情況下, XXXXX)。 我的代碼找不到它,導致元素中沒有「值」。 這裏怎麼我嘗試refence它:

doc.getElementsByAttributeValue("name", "b2").first().attr("value")) 

據我瞭解網頁...它得到一個Java腳本里面的代碼更新加載。但我只是不知道,如何從我的JAVA代碼訪問這些數據...

這是HTML頁面與JS代碼開始時:

<script src="/js/cuba-ng.js" type="text/javascript"></script> 
<script src="/js/fchng.js" type="text/javascript"></script> 
<script src="/js/jquery.js" type="text/javascript"></script> 
<script src="/js/jquery.dataTables.js" type="text/javascript"></script> 
<script type="text/javascript">//<![CDATA[ 
$(document).ready 
( function() 
    { $("#chan").dataTable({ "aaSorting": [[ 4, "desc" ]], "bPaginate": false, "bFilter": false }); 
    } 
); 
function sbnrSel() 
{ if (document.forms[0].b3.value > 39) return; 
    var bnr = "xxxx"; 
    bnr = document.forms[0].b1.value; 
    var sbnr = bnr.substr(1,3); 
    var ba = bnr.charAt(0); 
    switch (ba) 
    { case "1": sba="I";break; 
     case "2": sba="O";break; 
     case "3": sba="B";break; 
     case "4": sba="D";break; 
     default: sba="Z";break; 
    } 
    document.forms[0].b2.value=sba+sbnr; 
} 

//]]></script> 

可惜我不能提供整個代碼和數據。一些安全限制。希望你能理解。

我能夠通過Firefox插件查看引用的JS腳本。 似乎HTML充滿了JS數據表庫。

期待您的支持。 對不起,如果有任何重要信息丟失。

回答

0

我解決了這個問題,通過使用不同的方式來訪問一側。我找到了HTMLunit Webclient,而不是使用HttpURLConnection。有了這個,我可以在答覆中運行JavaScript代碼。 請參閱使用的代碼:

WebClient webClient = new WebClient(); 
WebRequest request; 
request = new WebRequest(new URL(<enter URL here>)); 
Page page = webClient.getPage(request); 
text = page.getWebResponse().getContentAsString();