Feedback

C# - Website nach (regulären) Ausdruck (z.B. Emails) durchsuchen

Veröffentlicht von am 14.11.2015
(0 Bewertungen)
Die Methode dient dazu, eine Website nach einer bestimmten Zeichenkette zu durchsuchen. Als Parameter werden die URL und der Suchstring übergeben. Der Rückgabewert ist eine ArrayList mit jeglichen gefundenen Werten.


ArrayList strings = searchWebsiteForString("http://www.example.com", "example");

// Example
// Example
// example
// example
// example


Und so sieht das aus, wenn man nach Emails sucht


ArrayList results = searchWebsiteForString("http://dotnet-snippets.de/imprint", "([^@][A-Za-z0-9-_]+)@([^\\.][A-Za-z0-9-_]+).([A-Za-z]+)");

// ;info@jan-welker.de
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;

public static ArrayList searchWebsiteForString(string url, string regex)
{
    if (url == null | regex == null)
        throw new ArgumentNullException(url);

    ArrayList result = new ArrayList();
    var webRequest = (HttpWebRequest)WebRequest.Create(url);
    using (WebResponse webResponse = webRequest.GetResponse())
    {

        using (StreamReader sr = new StreamReader(webResponse.GetResponseStream()))
        {

            string content = sr.ReadToEnd();

            Regex r = new Regex(regex, RegexOptions.IgnoreCase);

            Match match = r.Match(content);
            while (match.Success)
            {
                result.Add(match.Value);
                match = match.NextMatch();
            }
        }

    }

    return result;
}

Abgelegt unter Web, Website, Suchen, Regex, Crawler.

2 Kommentare zum Snippet

Koopakiller schrieb am 14.11.2015:
Wir sind im Jahr 2015 und haben Generika und sogar Iteratorfunktionen.

Ein String-Array oder in deinem Fall vielleicht besser ein IEnumerable<string> zurück zu geben empfände ich als am besten, da diese Lösung bei großen Seiten auch Leistungseffizienter wäre.
Jan Welker schrieb am 16.11.2015:
Super Beispiel :)
 

Logge dich ein, um hier zu kommentieren!