根据关键字

时间:2016-06-07 23:12:25

标签: google-search google-custom-search google-search-api

我想对某个给定的关键字进行谷歌搜索,然后在返回结果中我想查找前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;上面的逻辑调用简单的谷歌搜索传递查询,页数和国家。我不必传递任何ClientCX参数。这是一个很好的方式来搜索我想要做的事情吗?

2 - ; Google也有developers API来执行自定义搜索。但是,我猜如果我必须使用Client,我需要传递CXCSE参数。 CSE对于我正在尝试做的事情来说太过分了吗?

1 个答案:

答案 0 :(得分:0)

请尝试使用此正则表达式:

@"(?:<a href="")(https?:[a-zA-Z0-9.&;,_\-?=/]+)"""

它会抓取Google的内部链接以及搜索链接,但如果您只是检查字符串是否存在,它应该可以正常工作。