JAVA:从JS数据表

时间:2016-02-29 10:08:00

标签: java html parsing datatables

我在解析网站内容方面遇到了问题。 它是一个"数据存储"站点(网络文档),从中我需要数据来生成一些配置。

凡。 我正在使用HttpURLConnection连接到该页面,没有任何问题。 将站点读入String并使用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)。 我的代码找不到它,因为没有&#34;值&#34;在元素中。 我在这里试图反驳它:

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

据我了解页面...它在代码中通过Java脚本加载时得到更新。但我不知道如何从我的JAVA代码中访问这些数据......

这是带有JS代码的HTML页面的开头:

<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数据表库。

期待您的支持。 对不起,如果有任何关键信息缺失。

1 个答案:

答案 0 :(得分:0)

我通过使用不同的方式来访问侧面来解决这个问题。我没有使用HttpURLConnection,而是找到了HTMLunit Webclient。有了这个,我可以在回复中运行JavaScript代码。 请参阅使用的代码:

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