Feedback

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

Sprache: C#

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. [code] ArrayList strings = searchWebsiteForString("http://www.example.com", "example"); // Example // Example // example // example // example [/code] Und so sieht das aus, wenn man nach Emails sucht [code] ArrayList results = searchWebsiteForString("http://dotnet-snippets.de/imprint", "([^@][A-Za-z0-9-_]+)@([^\.][A-Za-z0-9-_]+).([A-Za-z]+)"); // ;info@jan-welker.de [/code]
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;
}
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;
}

2 Kommentare

  1. Wir sind im Jahr 2015 und haben Generika und sogar Iteratorfunktionen.

    Ein String-Array oder in deinem Fall vielleicht besser ein IEnumerable zurück zu geben empfände ich als am besten, da diese Lösung bei großen Seiten auch Leistungseffizienter wäre.