はじめに、これについて同様のスレッドがあることは知っていますが、Java、Python、Php ではなく C# を使用しています。一部のスレッドは、単一の URL に対するソリューションを提供しますが、これは普遍的ではありません。私にフラグを立てないでくれてありがとう。
そのため、Google アラートを使用して記事へのリンクをメールで取得しています。メールから URL を削除するプログラムと、Web サイトをスクレイピングする別のプログラムを既に作成しました。私の問題は、Google アラート メールのリンクが次のようになっていることです。
これは Google を介して実際の記事にリダイレクトされるため、私のスクレイピング プログラムはこれらのリンクでは機能しません。ここでの質問や他の情報源から、100万の異なる正規表現を試しました。私は実際の記事の 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;
}
新しい正規表現であろうと、追加のコードであろうと、エンディングを取り除くのに役立つものがあります。前もって感謝します。