2013-03-04 72 views
1

我想了解这个特定的链接。我怀疑它启动了某种Java脚本,但我不确定。我想在一天结束时提取URL。这是什么href?

HTML标记是这样的:

<a href="#" 
    onclick="if(typeof jsfcljs == 
     'function' {jsfcljs(document.getElementById('resultadoForm'), 
    {'resultado:0:j_id234':'resultado:0:j_id234'},'');} 
    return false"> 
     11024968 
</a> 

,这是通过将http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/home.seam,打字达到了 “11024968” 的 “Código”,然后提交表单( “Pesquisar”)。上面显示的链接是“11024968”。

此外,

<script type="text/javascript" language="Javascript">function dpf(f) {var adp = f.adp;if (adp != null) {for (var i = 0;i < adp.length;i++) {f.removeChild(adp[i]);}}};function apf(f, pvp) {var adp = new Array();f.adp = adp;var i = 0;for (k in pvp) {var p = document.createElement("input");p.type = "hidden";p.name = k;p.value = pvp[k];f.appendChild(p);adp[i++] = p;}};function jsfcljs(f, pvp, t) {apf(f, pvp);var ft = f.target;if (t) {f.target = t;}f.submit();f.target = ft;dpf(f);};</script> 

所以,我会感激,如果任何人都可以解释如何遵循(或提取物),其文本为“11024968”的网址。

+0

编辑,包括了'jsfcljs()'功能,为@rekire说。 – djas 2013-03-04 21:35:25

+0

看来,JSON的参数被附加到公式中。目标被设置为url本身(“”),提交后参数被删除,目标被重置为原始值。 – rekire 2013-03-05 06:53:36

回答

1

该链接指向一个空锚点。这通常用于JavaScript处理的链接。所以如果你的JavaScript失败了,只有哈希标签被添加到当前的URL。

魔术发生在您的代码中的jsfcljs() JavaScript函数中。没有代码,我们现在不能说更多。

让我们重新设置代码,让他们更好的名字:

function dpf(f) {     // let's rename this to removeParameters 
    var adp = f.adp;    // element store from apf (addParameters) 
    if(adp != null) {    // check if the parematers needs to be removed 
     for(var i=0; i<adp.length; i++) { // interates thrue the known paramters 
      f.removeChild(adp[i]); // removes a child 
     } 
    } 
}; 
function apf(f, pvp) { // let's rename this to addParameters 
    var adp = new Array(); 
    f.adp = adp; 
    var i = 0; 
    for(k in pvp) { // iterates thrue the json structure 
     // appends all parameters from the json structure to the 
     // element store (apd) and to the given formular (f) 
     var p = document.createElement("input"); 
     p.type = "hidden"; 
     p.name = k; 
     p.value = pvp[k]; 
     f.appendChild(p); 
     adp[i++] = p; 
    } 
}; 
function jsfcljs(f, pvp, t) { // let's rename this to postJsonData 
    apf(f, pvp);    // add paramaters 
    var ft = f.target;  // store orginal target 
    if(t) { 
     f.target = t;   // set new target if given 
    } 
    f.submit();    // submit the form 
    f.target = ft;   // restore target 
    dpf(f);     // remove added parameters 
}; 
+0

谢谢@rekire。我编辑了我的问题,以包含'jsfcljs()'函数。 – djas 2013-03-04 21:35:46

+0

是的,非常感谢。但是我对Java的知识并不存在。无论如何,鉴于我的最终目标是抓取这个网站,我想我需要像Selenium这样的东西(之前在Python中使用机械化)。任何想法,总是感激。再次感谢。 – djas 2013-03-05 19:53:25

+0

请记住,您需要获得使用其他域数据的权限。另请注意,Java和JavaScript是完全不同的语言。就像C语言一样,语法几乎相同。 – rekire 2013-03-05 21:55:00