我正在使用网站在谷歌搜索中查找关键字位置...我有两个文本框(一个用于获取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
答案 0 :(得分:2)
在Google结果列表的HTML中,每个结果链接的href
属性显示在class
属性之前,而不是之后。
试试这个:
string lookup = "(<a href=\")(\\w+[a-zA-Z0-9.-?=/]*)\" class=l";