2016-08-22 4 views
0

序文には、このことについて同様のスレッドがあることを知っていますが、私はC#、Java、Python、またはPhpを使用していません。一部のスレッドは、単一のURLに対する解決策を提供しますが、これは普遍的ではありません。私に印を付けてくれてくれてありがとう。私はGoogleアラートURLを削除する必要があります

Googleアラートを使用して、記事をメールで送信しています。私は既に電子メールからURLを取り除くことができるプログラムを作成しただけでなく、ウェブサイトを掻き取る別のプログラムも作成しました。私の問題は、Googleアラートのメールのリンクが次のようになっていることです。

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を介して実際の記事にリダイレクトされるため、私のスクレイピングプログラムはこれらのリンクでは機能しません。私はここと他の情報源からの質問から百万の異なるRegExを試しました。私は実際の記事の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

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; 
    }   

いくつかの助けを:彼らは今のように見えます。前もって感謝します。

答えて

1

HttpUtility.ParseQueryStringを使用すると、クエリ文字列のurl部分を取得できます。これはSystem.Web名前空間にあります(参照が必要です)。

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 
+0

うわー、それは信じられないほど簡単でした。本当にありがとう! –

関連する問題