foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

Google 検索結果から指定したサイトを非表示にする

環境

問題

Google 検索結果に意味がないページが出てきて邪魔。

解決方法

下記の Firefox Greasemonkey スクリプトを登録する。
filters に定義を追加することで、Google 検索結果に表示されなくなる。

// ==UserScript==
// @name      Google Search Filter
// @namespace http://foldrr/google_search_filter
// @include   http://www.google.com/search?*
// @include   http://www.google.co.jp/search?*
// ==/UserScript==

(function() {
    var filters = [
        "www*.atwiki.jp/mhp2g/?cmd=search&keyword=*",
        "www.smarter.co.jp",
    ];
    
    filter(null);

    if(window.AutoPagerize){
        window.AutoPagerize.addDocumentFilter(function(doc){
            filter(doc);
        });
    }
    
    function filter(doc){
        doc = doc ? doc : document;
        var nodes = $X("//li", doc);
        
        var anchors = $X('//a[@class="l"]', doc);
        for(var i = 0, n = nodes.length; i < n; i++){
            for(var fi = 0, fn = filters.length; fi < fn; fi++){
                var f = filters[fi];
                f = f.replace(/\./g, "\\.");
                f = f.replace(/\*/g, ".*");
                f = f.replace(/\?/g, "\\?");
                var re = new RegExp("^https?:\\/\\/" + f, "gi");
                if(anchors[i].href.match(re)){
                    nodes[i].style.display = "none";
                }
            }
        }
    }
    
    function $X(query, doc) {
        if(! doc){
            doc = document;
        }
        var r = new Array();
        var ns = doc.evaluate(query, doc, null,
        XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
        for(var i = 0, n = ns.snapshotLength; i < n; i++){
            r.push(ns.snapshotItem(i));
        }
        return r;
    }
})();