Saya perlu menghapus URL Google Alerts

Sebagai pengantar, saya tahu ada topik serupa tentang ini, tapi saya menggunakan C#, bukan Java, atau python, atau Php. Beberapa rangkaian pesan memberikan solusi untuk satu URL, yang tidak bersifat universal. Terima kasih karena tidak menandai saya.

Jadi saya menggunakan Google Alerts untuk mendapatkan link ke artikel melalui email. Saya telah menulis sebuah program yang dapat menghapus URL dari email serta program lain untuk mengikis situs web. Masalah saya adalah tautan di email Google Alerts terlihat seperti ini:

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. Ya, jelek.

Karena ini mengalihkan ke artikel sebenarnya melalui Google, program pengikisan saya tidak berfungsi pada tautan ini. Saya telah mencoba jutaan RegEx berbeda dari pertanyaan di sini dan sumber lain. Saya berhasil menghapus semuanya hingga http:// artikel sebenarnya tetapi masih ada ujung yang mengacaukannya. Inilah yang saya miliki sejauh ini. Mereka sekarang terlihat seperti:

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

Beberapa bantuan untuk menghilangkan bagian akhir akan sangat membantu, baik itu RegEx baru atau kode tambahan. Terima kasih sebelumnya.


person Daniel Kasman    schedule 22.08.2016    source sumber


Jawaban (1)


Anda dapat menggunakan HttpUtility.ParseQueryString untuk mengambil bagian url dari string kueri. Itu terletak di namespace System.Web (diperlukan referensi).

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
person Pierre-Alain Vigeant    schedule 22.08.2016
comment
Wow, itu sangat sederhana. Terima kasih banyak! - person Daniel Kasman; 23.08.2016