C# 分析搜索引擎url 得到搜索关键字

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;

namespace HbTui.Portal
{
    public class SearchKeyWord
    {
        private string[][] _Enginers = new string[][]
        {
            new string[]{"google","utf8","q"},
            new string[]{"baidu","gb2312","wd"},
            new string[]{"yahoo","utf8","p"},
            new string[]{"yisou","utf8","search"},
            new string[]{"live","utf8","q"},
            new string[]{"tom","gb2312","word"},
            new string[]{"163","gb2312","q"},
            new string[]{"iask","gb2312","k"},
            new string[]{"soso","gb2312","w"},
            new string[]{"sogou","gb2312","query"},
            new string[]{"zhongsou","gb2312","w"},
            new string[]{"3721","gb2312","p"},
            new string[]{"openfind","utf8","q"},
            new string[]{"alltheweb","utf8","q"},
            new string[]{"lycos","utf8","query"},
            new string[]{"youdao","utf8","q"},
            new string[]{"onseek","utf8","q"},
            new string[]{"jike","utf8","q"}
        };

        //搜索引擎名称
        private string _EngineName = string.Empty;
        public string EngineName
        {
            get
            {
                return _EngineName;
            }
        }

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

        private string _Regex = @"(";

        //搜索引擎关键字
        //建立搜索关键字正则表达式
        public void EngineRegEx(string myString)
        {
            for (int i = 0, j = _Enginers.Length; i < j; i++)
            {
                if (myString.Contains(_Enginers[i][0]))
                {
                    _EngineName = _Enginers[i][0];
                    _Coding = _Enginers[i][1];
                    _RegexWord = _Enginers[i][2];
                    _Regex += _EngineName + @".+.*[?/&]" + _RegexWord + @"[=:])(?<key>[^&]*)";
                    break;
                }
            }
        }

        //得到搜索引擎关键字
        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 = GetUTF8String(myString);
                }
                else
                {
                    myString = Uri.UnescapeDataString(myString);
                }
            }
            return myString;
        }

        //整句转码
        public string GetUTF8String(string myString)
        {
            Regex myReg = new Regex("(?<key>%..%..)", RegexOptions.IgnoreCase);
            MatchCollection matches = myReg.Matches(myString);
            string myWord;
            for (int i = 0, j = matches.Count; i < j; i++)
            {
                myWord = matches[i].Groups["key"].Value.ToString();
                myString = myString.Replace(myWord, GB2312ToUTF8(myWord));
            }
            return myString;
        }
        //单字GB2312转UTF8 URL编码
        public string GB2312ToUTF8(string myString)
        {
            string[] myWord = myString.Split(‘%‘);
            byte[] myByte = new byte[] { Convert.ToByte(myWord[1], 16), Convert.ToByte(myWord[2], 16) };
            Encoding GB = Encoding.GetEncoding("GB2312");
            Encoding U8 = Encoding.UTF8;
            myByte = Encoding.Convert(GB, U8, myByte);
            char[] Chars = new char[U8.GetCharCount(myByte, 0, myByte.Length)];
            U8.GetChars(myByte, 0, myByte.Length, Chars, 0);
            return new string(Chars);
        }

        //判断否为搜索引擎爬虫,并返回其类型
        public string isCrawler(string SystemInfo)
        {
            string[] BotList = new string[] { "Google", "Baidu", "yisou", "MSN", "Yahoo", "live", "tom", "163", "TMCrawler", "iask", "Sogou", "soso", "youdao", "zhongsou", "3721", "openfind", "alltheweb", "lycos", "bing", "118114" };
            foreach (string Bot in BotList)
            {
                if (SystemInfo.ToLower().Contains(Bot.ToLower()))
                {
                    return Bot;
                }
            }
            return "null";
        }
        public bool IsSearchEnginesGet(string str)
        {
            string[] strArray = new string[] { "Google", "Baidu", "yisou", "MSN", "Yahoo", "live", "tom", "163", "TMCrawler", "iask",
            "Sogou", "soso", "youdao", "zhongsou", "3721", "openfind","alltheweb", "lycos", "bing", "118114"};
            str = str.ToLower();
            for (int i = 0; i < strArray.Length; i++)
            {
                if (str.IndexOf(strArray[i].ToLower()) >= 0)
                {
                    return true;
                }
            }
            return false;
        }
    }
}
时间: 2024-11-25 21:35:27

C# 分析搜索引擎url 得到搜索关键字的相关文章

Python实验:百度搜索关键字自动打开相关URL

#! python # coding: utf-8 # python实现百度搜索关键字,并依次用浏览器打开前五个搜索结果 ## ##Beautiful Soup 是一个模块,用于从HTML 页面中提取信息(用于这个目的时,它比正则表达式好很多).BeautifulSoup 模块的名称是bs4(表示Beautiful Soup,第4 版).要安装它,需要在命令行中运行pip install beautifulsoup4 import bs4, sys, webbrowser, requests #

如何设置网页的搜索关键字

如何设置网页关键词 <meta name="description" content="站点描述">    <meta name="keywords" content="关键词"> 1.meta标签是内嵌在你网页中的特殊html标签,包含着你有关于你网页的一些隐藏信息. Meat标签的作用是向搜索引擎解释你的网页是有关哪方面信息的.对于高级的搜索引擎来说,html 的meta 标签并不是什么新奇的东西.

提取URL的搜索字符串中的参数

1 /*--------------------------------------------------------------------------------* 2 * 功能描述:提取URL的搜索字符串中的参数 3 * 原理:这个函数用来解析来自URL的查询串中的的name=value参数对 4 * 它将name=value对存储在一个对象的属性中,并返回该对象 5 * 测试:已通过 6 * 时间:2016/10/31 7 *------------------------------

将搜索关键字设置为高亮显示实例代码

将搜索关键字设置为高亮显示实例代码:搜索关键词以高亮状态呈现是一种比较人性化的举措,例如百度或者本站都有这样的功能,可以极大的提高辨识度,下面就通过代码实例介绍一下如何实现此功能.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/

在 Angular 中实现搜索关键字高亮

在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数据展示在页面中. 但是,在有些情况下,比如我们有一个搜索框,希望将搜索的关键字在正文中高亮出来,这时候就会感觉比较吃力了,filter 可以帮助我们处理这种情况. 实际上,很多时候,我们的数据是不能直接输出到 DOM 中的,典型的比如日期,或者货币等等,通常需要将我们内部的数据格式化之后,再输出到页

如何给wp(Windows phone)中搜索关键字加亮?

问题来源 最近在群里看到群友讨论在wp中有个搜索功能,要求搜索关键字在搜索结果内容中加亮(即加颜色),由于wp中没有自带这样的控件,于是大家各抒自见,有人说用第三方控件,有人说用richtextbox,也有人说用textblock和run!那究竟哪种实现比较好呢?个人看法,当然是用textblock和run实现起来是最方便的! 实现要求 1.给出关键字(如:我,购物,菜鸟,技术),关键字可以一个或者多个,多个用英文逗号隔开 2.能在搜索结果中对关键字进行加亮 3.能自定义加亮的颜色 4.要求复用

Android中ListView字母排序,实现字母挤压效果以及右侧快速选中字母,搜索关键字功能

Android中ListView字母排序,实现字母挤压效果以及右侧快速选中字母,搜索关键字功能 本文中阐述如何自定义EditText实现搜索框自定义的样式以及挤压字母的思路等 自定义EditText 相关的drawable文件 主界面以及相关的适配器 结果展示 定义要呈现的EditText的样式 public class ClearEditText extends EditText implements OnFocusChangeListener, TextWatcher { /** * 定义删

给搜索关键字添加高亮,加以颜色区分

问题描述: 如图中所示,当我单击按专业搜索时,筛选出专业中包含有关键字的专业,并且讲输入的关键字用其他颜色区分开来.结果中每个学校和每个专业都是链接<a>. 实现方法: 1.首先找到专业这一列: var filterResultTable = document.getElementById("searchResult");//找到结果集合table.searchResult为table的id for (var i = 1; i < filterResultTable.

仿百度壁纸客户端(五)——实现搜索动画GestureDetector手势识别,动态更新搜索关键字

仿百度壁纸客户端(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 我们重新来看看这个效果 想实现这个逻辑,其实就是监听两个View的显示隐藏加上一点小动画,所以我们在布局上是这样的 search_fragment.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.c