首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要剥离Google Alerts URL

我需要剥离Google Alerts URL
EN

Stack Overflow用户
提问于 2016-08-23 04:51:21
回答 1查看 166关注 0票数 0

作为开场白,我知道有类似的主题,但我使用的是C#,而不是java、python或Php。有些线程提供了针对单个URL的解决方案,但这种解决方案并不通用。谢谢你没有提醒我。

所以我使用Google Alerts通过电子邮件获得文章的链接。我已经写了一个程序,可以剥离的网址从电子邮件,以及另一个程序来刮网站。我的问题是google alerts电子邮件中的链接看起来像这样:

https://www.google.com/url?rct=j&sa=t&url=http://www.foxnews.com/health/2016/08/19/virtual-reality-treadmills-help-prevent-falls-in-elderly.html&ct=ga&cd=CAEYACoTOTc2NjE4NjYyNzMzNzc3NDcyODIaODk2NWUwYzRjMzdmOGI4Nzpjb206ZW46VVM&usg=AFQjCNGyK2EyVBLoKnNkdxIBDf8a_B3Ung。是啊,丑陋。

因为这会通过google重定向到实际的文章,所以我的抓取程序在这些链接上不起作用。我在这里和其他来源的问题中尝试了一百万种不同的RegExs。我设法剥离了所有内容,直到实际文章的http://,但它仍然有搞砸它的尾部。这是我到目前为止所拥有的。它们现在看起来像:

http://www.foxnews.com/health/2016/08/19/virtual-reality-treadmills-help-prevent-falls-in-elderly.html&ct=ga&cd=CAEYACoTOTc2NjE4NjYyNzMzNzc3NDcyODIaODk2NWUwYzRjMzdmOGI4Nzpjb206ZW46VVM&usg=AFQjCNGyK2EyVBLoKnNkdxIBDf8a_B3Ung

代码语言:javascript
复制
    private List<string> GetLinks(string message)
    {
        List<string> list = new List<string>();
        Regex urlRx = new Regex(@"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?)", RegexOptions.IgnoreCase);

        MatchCollection matches = urlRx.Matches(message);
        foreach (Match match in matches)
        {
            if(!match.ToString().Contains("news.google.com/news") && !match.ToString().Contains("google.com/alerts"))
            {
                string find = "=http";
                int ind = match.ToString().IndexOf(find);                    
                list.Add(match.ToString().Substring(ind+1));
            }                
        }
        return list;
    }        

一些帮助摆脱结尾将是很棒的,无论是一个新的RegEx或一些额外的代码。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-23 05:02:35

您可以使用HttpUtility.ParseQueryString来检索查询字符串的url部分。它位于System.Web命名空间中(需要引用)。

代码语言:javascript
复制
var uri = new Uri("https://www.google.com/url?rct=j&sa=t&url=http://www.foxnews.com/health/2016/08/19/virtual-reality-treadmills-help-prevent-falls-in-elderly.html&ct=ga&cd=CAEYACoTOTc2NjE4NjYyNzMzNzc3NDcyODIaODk2NWUwYzRjMzdmOGI4Nzpjb206ZW46VVM&usg=AFQjCNGyK2EyVBLoKnNkdxIBDf8a_B3Ung");
var queries = HttpUtility.ParseQueryString(uri.Query);
var foxNews = queries["url"]; //http://www.foxnews.com/health/2016/08/19/virtual-reality-treadmills-help-prevent-falls-in-elderly.html
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39088532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档