我想对某个给定的关键字进行谷歌搜索,然后在返回结果中我想查找前10页中是否存在特定的URL。
我已经完成了我正在寻找的帖子here,但是即使在听完答案后我也找不到正则表达式的匹配。
这是我的代码
public bool SearchGoogle(string keyword, string url)
{
string raw = "http://www.google.com/search?num=10&q={0}&cr=countryCA";
string googleurl = string.Format(raw, HttpUtility.UrlEncode(keyword));
var client = new WebClient();
var html = client.DownloadString(googleurl);
string lookup = "(<a href=\")(\\w+[a-zA-Z0-9.-?=/]*)\" class=l";
MatchCollection matches = Regex.Matches(html, lookup);
// matches.Count is always zero here ?????
for (int i = 0; i < matches.Count; i++)
{
string match = matches[i].Groups[2].Value;
if (match.Contains(url))
{
return i + 1;
}
}
return 0;
}
问题
1 GT;上面的逻辑调用简单的谷歌搜索传递查询,页数和国家。我不必传递任何Client
或CX
参数。这是一个很好的方式来搜索我想要做的事情吗?
2 - ; Google也有developers API来执行自定义搜索。但是,我猜如果我必须使用Client
,我需要传递CX
和CSE
参数。 CSE
对于我正在尝试做的事情来说太过分了吗?
答案 0 :(得分:0)
请尝试使用此正则表达式:
@"(?:<a href="")(https?:[a-zA-Z0-9.&;,_\-?=/]+)"""
它会抓取Google的内部链接以及搜索链接,但如果您只是检查字符串是否存在,它应该可以正常工作。