使用js实现基于可视布局信息的网页噪音去除的测试方法

来源:互联网 发布:美工刀片尺寸 编辑:程序博客网 时间:2024/05/02 00:03
 可视布局信息的网页噪音去除方法很早就从网上看到,但是苦于没有java中没有简单的方法能够得到网页元素位于屏幕中的实际位置,所以一直没做过,前一段时间学js,突然发现js能很容易得到每个网页元素位于屏幕中的实际位置。所以就写了这个简单函数测试了一下,好像效果还不错,不过个人认为基于可视布局信息的网页噪音去除最好和其他的方法结合使用,单独使用准确率还不是很好。

<script language="JavaScript">
function getElementTagName(){
    var h1 = 200;
    var h2 = document.body.scrollHeight - 160;
    var w1 = document.body.scrollWidth * 0.3;
    var w2 = document.body.scrollWidth * 0.7;
    //alert("width:" + document.body.scrollWidth  + "height:" + document.body.scrollHeight);
    var ele = document.getElementsByTagName("table");
    alert("元素为table的个数:" + ele.length);
    for (i = 0; i < ele.length; ++i) {
        var temp = "";
        var e = ele(i);
        var   x,y,w,h;  
             oRect   =   e.getBoundingClientRect();  
            x=oRect.left;  
            y=oRect.top;
        w = e.offsetWidth;
        h = e.offsetHeight;

        temp = "table" + i;
        if ((y + h) < h1)
            alert(temp + "/r/nHEADER:/r/n/r/n" + e.innerText);
        if (y >= h2)
            alert(temp + "/r/nFOOTER:/r/n/r/n" + e.innerText);
        if ((x + w) < w1)
            alert(temp + "/r/nLM:/r/n/r/n" + e.innerText);
        if (x >= w2)
            alert(temp + "/r/nRM:/r/n/r/n" + e.innerText);
        if ((y < h2) && ((y + h) >= h1) && (x < w2) && ((x + w) >= w1))
            alert(temp + "/r/nCENTER:/r/n/r/n" + e.innerText);
        //alert(temp);
        //temp += "left:" + x;
        //alert(temp);
        //temp += "top:" + y;
        //alert(temp);
        //temp += "width:" + e.offsetWidth;
        //alert(temp);
        //temp += "height:" + e.offsetHeight;
        //alert(temp + "/r/n/r/n" + e.innerText);
    }
}
</script>