Laden...

Bestimmte Inhalte aus Webseite auslesen

Erstellt von Ploetzi vor 14 Jahren Letzter Beitrag vor 14 Jahren 4.120 Views
Ploetzi Themenstarter:in
313 Beiträge seit 2006
vor 14 Jahren
Bestimmte Inhalte aus Webseite auslesen

Beschreibung:

Mithilfe der Webseite Klasse (http://www.tsql.de/csharp/webseite_lesen_html_tags_entfernen_emails_auslesen.php) und der getpart() (Quelle:http://www.ploetzeneder.eu/softwareentwicklung/cvbnet/86-webseite-inhalte-auslesen.html)y


Webseite x = new Webseite("http://www.meineseite.com");
MessageBox.Show(getpart(xgetText(), "Vorname:", "Nachname:");


Das getpart:

        public string getpart(string content,string start, string ende)
        {
            content = content.Substring(content.IndexOf(start), content.IndexOf(ende) - content.IndexOf(start));
            content = content.Trim();
            content = content.Replace(((char)009).ToString(), "");
            content = content.Replace(((char)32).ToString(), "");
            content = content.Replace(((char)10).ToString(), "");
            content = content.Replace(((char)13).ToString(), "");
            content = content.Replace(start, "");
            return content;

        }
2.891 Beiträge seit 2004
vor 14 Jahren

Hallo Ploetzi,

ein paar Anmerkungen dazu:*dein Beispielcode funktioniert nicht (xgetText()) *Bzgl. der Webseite-Klasse: Den Inhalt einer Website kann man auch kürzer mit WebClient.DownloadString() herunterladen. *Das bloße Entfernen von HTML-Tags ohne "Interpretieren" des Dokuments durch einfaches Anwenden einen Regex ist ziemlich optimistisch. Haut z.B. bei CDATA-Abschnitten schon nicht hin. *Das Ersetzen der Sonderzeichen ist erstens - sorry - hässlich: Warum castest du int-Werte zu chars? So ist doch überhaupt nicht zu erkennen, dass du '\t','\r', '\n' und ' ' ersetzt/löschst. Und warum löscht du Leerzeichen? Das Löschen von bestimmten Zeichen würde ich dem Aufrufer überlassen und nicht in der Methode machen.
Zweitens geht es kürzer mit content = Regex.Replace(content,"\r|\n|\t| ","") *An den "Zwischentext" kommt man auch kürzer mit

public static string GetPart(string content,string start,string end)
{
	Match match = Regex.Match(content,Regex.Escape(start)+"(.*?)"+Regex.Escape(end));
	return (match.Success) ? match.Groups[1].Value : null; 
}

Gruß,
dN!3L

P.S.: Entwurfsrichtlinien zum Entwickeln von Klassenbibliotheken - Richtlinien für Namen