如何编写正则表达式从Bing搜索结果中提取URL?

时间:2017-01-20 19:34:20

标签: c# regex

我这是从谷歌搜索结果中提取URL (https://www.google.com/search?q=myquery&num=100

@"(?<=<h3 class=\""r\""><a href=\""\/url\?q=)(.*?)(?=&amp;)";

这是我从谷歌搜索结果中提取网址的代码

const string regexPattern = @"(?<=<h3 class=\""r\""><a href=\""\/url\?q=)(.*?)(?=&amp;)";

public static string[] TopUrls(string data)
    {
        Regex regex = new Regex(regexPattern);
        MatchCollection collection = regex.Matches(data);
        return collection.Cast<Match>()
            .Select(m => m.Value)
            .ToArray();
    }

string downloadUrl = "https://www.google.com" + "/search?q=" + keyword.ToString() + "&num=" + numResults + "&as_qdr=all&ei=LrUVVf7UMrPfsAS7lICgCw&sa=N&biw=1440&bih=690";
                fetch.Headers.Set(HttpRequestHeader.Host, "www.google.com");
                string data = fetch.DownloadString(downloadUrl);
                string[] results = TopUrls(data);

从该代码我可以从谷歌搜索结果中提取每个网址。

结果如下: https:// www blogger com / profile / 15582992268736301561 https:// www blogger com / profile / 17377873899922361640

如何为此网址编写正则表达式? http://www.bing.com/search?q=myquery&count=100

谢谢你:)

3 个答案:

答案 0 :(得分:1)

尝试使用此类<h2>*?<a\s+[^>]*?href="([^"]*)"

答案 1 :(得分:0)

为什么不使用Bing Search API?如果您真的必须解析HTML,那么您正在寻找算法结果。使用 b_algo 类获取 li 标记,并从中提取网址。

答案 2 :(得分:0)

您的第一步是使用:

<cite>(.*?)</cite>

然后您需要另一个正则表达式来删除<strong>标记