0
前言,我知道有类似的线程关于这个,但我使用C#,而不是Java,或Python或PHP。一些线程为单个URL提供了一个解决方案,这不是通用的。谢谢你不要打我。我需要去掉谷歌快讯网址
因此,我使用Google快讯通过电子邮件获取文章链接。我已经编写了一个程序,可以删除电子邮件中的URL以及另一个程序来删除网站。我的问题是,谷歌提醒电子邮件中的链接如下所示:
因为这通过谷歌重定向到实际文章,我的scraping程序不适用于这些链接。我从这里和其他来源的问题中尝试了一百万个不同的RegEx。我设法剥去了一切,直到实际文章的http://,但它仍然有尾部螺丝拧紧。这是我到目前为止。他们现在的样子:
private List<string> GetLinks(string message)
{
List<string> list = new List<string>();
Regex urlRx = new Regex(@"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)", 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;
}
一些帮助摆脱的结局将是真棒,是一个新的正则表达式或一些额外的代码。提前致谢。
哇,这非常简单。非常感谢! –