zoukankan      html  css  js  c++  java
  • 还没上线测试的来路统计和关键字统计

    /================== 来路和关键字统计==================

    在项目A的A.aspx页面实现功能,代码如下:

    private void Page_Load(object sender, System.EventArgs e)
       {
        if(!IsPostBack)
        {
         string str=Request.QueryString["r"].ToString();
         if(str=="")
          str=null;
         this.GetKeyAndWeb(str);
        }
       }

    //搜索引擎特征
       //begin
       private string[][] _Enginers = new string[][] {
                    new string[]{"baidu","gb2312","wd"},
                    new string[]{"google","utf8","q"},                           new string[]{"yahoo","utf8","p"},
                    new string[]{"sogou","gb2312","query"},
                    new string[]{"3721","gb2312","p"},
                    new string[]{"yisou","utf8","search"},
                    new string[]{"soso","gb2312","w"},
                    new string[]{"zhongsou","gb2312","w"},
                    new string[]{"live","utf8","q"},
                    new string[]{"tom","gb2312","word"},
                    new string[]{"163","gb2312","q"},
                    new string[]{"iask","gb2312","k"},                           new string[]{"openfind","utf8","q"},
                    new string[]{"alltheweb","utf8","q"},
                    new string[]{"lycos","utf8","query"},
                    new string[]{"onseek","utf8","q"}
                   };
       //end

       //搜索引擎名称
       //begin
       private string _EngineName = "";
       public string EngineName
       {
        get
        {
         return _EngineName;
        }
       }
       //end

       //搜索引擎编码
       //begin
       private string _Coding = "utf8";
       public string Coding
       {
        get
        {
         return _Coding;
        }
       }
       //end
           
       //搜索引擎关键字查询参数名称
       //begin
       private string _RegexWord = "";
       public string RegexWord
       {
        get
        {
         return _RegexWord;
        }
       }
       //end

       //建立搜索关键字正则表达式
       //begin
       private string _Regex = @"(";
       public void EngineRegEx(string myString)
       {
        //提取地址里面的搜索引擎名
        for (int i = 0, j = _Enginers.Length; i < j; i++)
        {
         if (myString.IndexOf(_Enginers[i][0])>-1)      
         {
          _EngineName = _Enginers[i][0]; //搜索引擎的名称 如baidu,google
          _Coding = _Enginers[i][1];      //编码方式 uft-8,gb2312
          _RegexWord = _Enginers[i][2];   //参数 wd,u
          _Regex += _EngineName + @"".+.*[?/&]" + _RegexWord + @"[=:])(?<key>[^&]*)";
          break;
         }
        }
       }
       //end


       //得到搜索引擎关键字
       //begin
       public string SearchKey(string myString)
       {
        EngineRegEx(myString.ToLower()); //调用上面的方法
        if (_EngineName != "")
        {
         Regex myReg = new Regex(_Regex, RegexOptions.IgnoreCase);
         Match matche = myReg.Match(myString);
         myString = matche.Groups["key"].Value;
         //去处表示为空格的+
         myString = myString.Replace("+", " ");
         if(_Coding=="gb2312") //如果是中文的 如百度 就用该种解码方式
         {
          myString=HttpUtility.UrlDecode(myString,Encoding.GetEncoding("gb2312"));
         }
         else     //如 google 的解码方式
         {
          myString=HttpUtility.UrlDecode(myString,Encoding.GetEncoding("utf-8"));  
         }
        }
        return myString;
       }
       //end

    //获取来路并提取关键字
       public void GetKeyAndWeb(string str)
       {
       
        string keys="";  
          string address=str;
        if(address!=null && _EngineName != "")
         keys = this.SearchKey(address);
        string dt=DateTime.Now.ToShortDateString();

        //转换成搜素引擎的中文名字 便于查阅
        string ChineseEngine="";  
        switch(_EngineName)
        {
         case "baidu":
          ChineseEngine="百度";
          break;
         case "google":
          ChineseEngine="谷歌";
          break;
         case "yahoo":
          ChineseEngine="雅虎";
          break;
         case "sogou":
          ChineseEngine="搜狗";
          break;
         case "3721":
          ChineseEngine="3721";
          break;
         case "163":
          ChineseEngine="网易";
          break;
         case "yisou":
          ChineseEngine="易搜";
          break;
         case "soso":
          ChineseEngine="搜搜";
          break;
         case "zhongsou":
          ChineseEngine="中搜";
          break;
         default://其他不常用的 不用转换
          ChineseEngine=_EngineName;
          break;
        }
        //

        //写入数据到数据库
        if(Session["sign"]==null)
        {
         Session["sign"]="sign";
           //下面的判断比较关键的
         if(address!=null) //来路不为空
         {
          new CountsPageBiz().WebCount(address,dt);
            if(keys!="") //关键字 防止来路是通过链接等来的
                       {
                                new CountsKeyBiz().KeyCount(keys, ChineseEngine, dt);
          
                        }

         }
         else
         {
            address="直接输入网址";
          new CountsPageBiz().WebCount(address,dt);

           }
        }

    }

    在项目B的B.aspx 的页面文件引用A.aspx

       < script id="tj"></script>

    <script type="text/javascript">

         var o=document.GetelementByID("tj");

         o.src="/A/A.aspx?r="+document.referrer:

    </script>

    ============================OK=============================

          刚开始在A.aspx里面统计来路,结果怎么弄来路都是B.aspx!这个问题困扰了我好几天,解决问题的关键就在B.aspx引用A.aspx的时候, 原来是直接这样做的:<script type="text/javascript" src="/A/A.aspx"></script>.也想到了在这里传个参数(B.aspx的来路即 document.referrer)给A.aspx,但是这个参数无法统计来路。?!

             我又想到在B.aspx.cs里面得到来路:address=Request.servervariables["Http_Referer"] ,然后这样写:<script type="text/javascript" src="/A/A.aspx?r=<%=%>"></script>,但是这样写比较麻烦,如果又很多页面需要统计,那 么每个页面都要这样写。!!

           终于,俊的一个同学刚好也在做这个,问题终于解决了!

          爽哉!轉

  • 相关阅读:
    kvm初体验之四:从Host登录Guest的五种方式
    kvm初体验之三:vm的安装及管理
    CentOS Wifi Connection
    kvm初体验之二:安装
    kvm初体验之一:参考文档
    有6种不同颜色的球,每种球有无数个。现在取5个球,求取出5、4、3、2种不同颜色球的概率分别为多少
    求两个字符串的最长连续子串
    不用除法来实现整数的除法运算
    抽象类和接口的区别
    o(n)的时间复杂判断回文数
  • 原文地址:https://www.cnblogs.com/leeolevis/p/1426247.html
Copyright © 2011-2022 走看看