парсинг ключевых слов поисковых систем

Я пытаюсь найти наиболее эффективный способ анализа моего System.Web.HTTPRequest.UrlReferrer, чтобы найти условие поиска, которое использовалось для привлечения посетителя на мой сайт, предполагая, что они прибыли на мой сайт через страницу результатов поисковой системы.

Я думаю (надеюсь), что буду использовать метод HttpUtility.ParseQueryString, но моя проблема заключается в попытке выяснить, какую переменную анализировать. У меня есть следующий список, который я должен проверить. Список показывает поисковую систему и параметр, который она использует.

daum:q,
eniro:search_word,
naver:query,
images.google:q,
google:q,
yahoo:p,
msn:q,
bing:q,
aol:query,
aol:encquery,
lycos:query,
ask:q,
altavista:q,
netscape:query,
cnn:query,
about:terms,
mamma:query,
alltheweb:q,
voila:rdata,
virgilio:qs,
live:q,
baidu:wd,
alice:qs,
yandex:text,
najdi:q,
aol:q,
mama:query,
seznam:q,
search:q,
wp:szukaj,
onet:qt,
szukacz:q,
yam:k,
pchome:q,
kvasir:q,
sesam:q,
ozu:q,
terra:query,
mynet:q,
ekolay:q,
rambler:words

Так что, пока я мог пройтись по каждому и сказать что-то вроде

NameValueCollection query = HttpUtility.ParseQueryString(UrlReferrer);
var referrer = Request.UrlReferrer.ToString();

if(referrer.Contains("google.com")
     return (query["q"]);
else if(referrer.Contains("yahoo.com")
     return (query["p"]);

Я думаю, что должен быть лучший способ, так как у меня есть эта прекрасная пара имя/значение, с которой можно работать, и сила метода ParseQueryString, но я рисую пустое место.


person hardba11    schedule 21.10.2010    source источник


Ответы (1)


Ну, я не доволен этим, и я не думаю, что добился эффективности, но это то, что я в итоге сделал. Я все еще хотел бы услышать от вас, ребята, с лучшими подходами.

private string GetKeywords(string urlReferrer)
    {
        var searchQuery = string.Empty;
        var url = new Uri(urlReferrer);
        var query = HttpUtility.ParseQueryString(urlReferrer);
        switch (url.Host)
        {
            case "google":
            case "daum":
            case "msn":
            case "bing":
            case "ask":
            case "altavista":
            case "alltheweb":
            case "live":
            case "najdi":
            case "aol":
            case "seznam":
            case "search":
            case "szukacz":
            case "pchome":
            case "kvasir":
            case "sesam":
            case "ozu":
            case "mynet":
            case "ekolay":
                searchQuery = query["q"];
                break;
            case "naver":
            case "netscape":
            case "mama":
            case "mamma":
            case "terra":
            case "cnn":
                searchQuery = query["query"];
                break;
            case "virgilio":
            case "alice":
                searchQuery = query["qs"];
                break;
            case "yahoo":
                searchQuery = query["p"];
                break;
            case "onet":
                searchQuery = query["qt"];
                break;
            case "eniro":
                searchQuery = query["search_word"];
                break;
            case "about":
                searchQuery = query["terms"];
                break;
            case "voila":
                searchQuery = query["rdata"];
                break;
            case "baidu":
                searchQuery = query["wd"];
                break;
            case "yandex":
                searchQuery = query["text"];
                break;
            case "szukaj":
                searchQuery = query["wp"];
                break;
            case "yam":
                searchQuery = query["k"];
                break;
            case "rambler":
                searchQuery = query["words"];
                break;
            default:
                searchQuery = query["q"];
                break;
        }
        return searchQuery;
    }
person hardba11    schedule 21.10.2010