谷歌搜索中使用C#的关键字位置

时间:2010-08-18 06:40:05

标签: c#

我正在使用网站在谷歌搜索中查找关键字位置...我有两个文本框(一个用于获取URL的文本框和另一个用于获取关键字的文本框)和 ,一个标签(在URl中显示关键字的位置)和我页面中的一个按钮......         当我点击该按钮时,它必须获取URL和关键字并在谷歌中搜索关键字 并给出位置....我得到了这个URL和关键字,它在谷歌正确搜索,但我没有得到那个位置......

我该如何获得这个职位?任何人告诉我解决方案...我的代码是

 protected void btnSubmit_Click(object sender, EventArgs e)
 {
    string strUrl = txtUrl.Text;
    Uri newUri = new Uri("http://www.Yahoo.com");
    int I = GetPosition(newUri, txtKeyword.Text);
 }


public static int GetPosition(Uri url, string searchTerm)
{
    string raw = "http://www.google.com/search?num=39&q={0}&btnG=Search";
    string search = string.Format(raw, HttpUtility.UrlEncode(searchTerm));

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(search);
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
        using (StreamReader reader = new StreamReader(response.GetResponseStream(),    Encoding.ASCII))
        {
            string html = reader.ReadToEnd();
            return FindPosition(html, url);
        }
    }
}


private static int FindPosition(string html, Uri url)
{
    string lookup = "(<a class=l href=\")(\\w+[a-zA-Z0-9.-?=/]*)";
    MatchCollection matches = Regex.Matches(html, lookup);

    for (int i = 0; i < matches.Count; i++)
    {
        string match = matches[i].Groups[2].Value;
        if (match.Contains(url.Host))
            return i + 1;
    }

    return 0;
}

这里我得到的match.count总是为0所以它总是返回零...我怎么能得到matches.count

1 个答案:

答案 0 :(得分:2)

在Google结果列表的HTML中,每个结果链接的href属性显示在class属性之前,而不是之后。

试试这个:

string lookup = "(<a href=\")(\\w+[a-zA-Z0-9.-?=/]*)\" class=l";