.
Anmeldung | Registrieren | Hilfe
in Suchen

html-code parsen (=analysieren)

Letzter Beitrag 13. Aug 2011 20:50 von marlem. 13 Antworten.
Seite 1 von 1 (14 Treffer)
Beiträge sortieren: Zurück Weiter
  • 03. Apr 2009 16:06

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    html-code parsen (=analysieren)

    Hallo Leute,

    in meinen 15 C#-Büchern habe ich mal wieder nichts gefunden und die suche über google war auch erfolglos!
    nun hoffe ich auf Euch!

    ich möchte html-code auf bestimmte tags und attribute überprüfen!

    Beispiele:

    hat ein img-tag ein alt-attribut?

    oder

    den inhalt des titletags extrahieren

    oder

    nach vorhanden sein von bestimmten metatags schauen.

    gibt es hierfür schon was fertiges von .net oder muss ich so einen parser selbst schreiben?



    • IP-Adresse ist Registriert
  • 03. Apr 2009 16:54 Antwort zu

    • Jan Welker
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 13. Jan 2008
    • 90491
    • Beiträge 1.464
    • Punkte 20.265
    • Moderator

    html-code parsen (=analysieren)

    Hallo Marlem,

    da wirst du dich mit Regulären Ausdrücken auseinander setzen müssen, die werden von .NET sehr gut unterstützt. Hier Zwei Links:

    http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
    http://msdn.microsoft.com/de-de/library/system.text.regularexpressions.regex.aspx

    Bei dotnet-snippets.de gibt es einige Beispiele für Regexanwendungen: http://dotnet-snippets.de/dns/Default.aspx?query=regex

    Viele Grüße,
    Jan

    • IP-Adresse ist Registriert
  • 03. Apr 2009 18:40 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    html-code parsen (=analysieren)

    okay, danke jan!
    • IP-Adresse ist Registriert
  • 03. Apr 2009 19:24 Antwort zu

    • Albert Weinert
    • Top 100 Mitwirkender
      Männlich
    • Registriert am 20. Mrz 2008
    • 50829 Köln
    • Beiträge 15
    • Punkte 210

    html-code parsen (=analysieren)

    Wenn Du (X)HTML Parsen will wirst Du mit RegEx nicht weit kommen. Da must Du dir schon einen richtigen Parser schreiben, oder einen vorhanden verwenden. Google spuckt zu (X)HTML Parser das eine oder andere aus auch für .NET. Für einen eigenen Parser http://antlr.org/ als startpunkt, damit kannst Du Dir Parser generieren lassen. Für HTML gibt es da auch Beispiele. Für das Syntax Highlighting. Ist halt die Frage ob Du ein eigenes Control bauen willst wass Dir dies entsprechende Anzeigt (wenn es einmal geparst ist und als AST im Speicher ist ist eine Colorierung der Darstellung sicher nicht mehr aufwändig). Du kannst aber auch fertiges nehme z.B. http://www.scintilla.org/ ein Editor Komponente mit eigenem Syntaxhight-Lighting. Mit einem eigenen Control bist Du sicherlich flexibler im Layout. Gerade WPF bietet mit Flow Document da einiges, auch zur Visualisierung von Problemen im HTML.
    http://der-albert.com
    • IP-Adresse ist Registriert
  • 04. Apr 2009 10:25 Antwort zu

    html-code parsen (=analysieren)

    Albert Weinert:
    Wenn Du (X)HTML Parsen will wirst Du mit RegEx nicht weit kommen.
    Warum nicht? Die Anforderungen, die er oben genannt hat, werden genau damit abgedeckt.
    Gruss Rene
    ______________________________


    weblog.drescher-hackel.de



    .NET Framework 2.0 Web-based Client Development & .NET Framework Application Development Foundation
    Abgelegt unter:
    • IP-Adresse ist Registriert
  • 05. Apr 2009 13:06 Antwort zu

    • JuergenAuer
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 17. Okt 2008
    • Berlin
    • Beiträge 127
    • Punkte 1.820

    html-code parsen (=analysieren)

    Das Problem bei solchen handgeschriebenen Versuchen ist, daß man sehr viele Fälle abdecken muß:

    Kommentare entfernen, Html-Version berücksichtigen (4.01 versus XHtml) usw.

    Bei XHtml ist das eigentlich die Aufgabe, den Input gegen eine DTD zu prüfen und dann auf das geladene Xml-Dokument gewisse XPath-Abfragen auszuführen.


    Die Logik dieser Techniken liegt darin, daß man für solche Standardaufgaben gerade keine eigenen, rohen RegEx mehr schreibt - daß man von solchen Techniken wegkommt.
    Server-Daten: Online CRM - Lösungen

    Sql und Xml
    • IP-Adresse ist Registriert
  • 06. Apr 2009 9:27 Antwort zu

    • Albert Weinert
    • Top 100 Mitwirkender
      Männlich
    • Registriert am 20. Mrz 2008
    • 50829 Köln
    • Beiträge 15
    • Punkte 210

    html-code parsen (=analysieren)

    Es geht nicht nur über die Überprüfung ob ein img Tag ein alt Attribute hat, sondern ob das HTML der Seite nach Vorgaben der Barrierefreiheit gestaltet ist. Dazu gehört eben nicht nur einfach mit RegEx ein paar Attribute oder Tags zu überprüfen, sondern auch die Struktur der Seite. Dies ist mit RegEx einfach nicht zu machen.
    http://der-albert.com
    • IP-Adresse ist Registriert
  • 31. Jul 2011 20:37 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    html-code parsen (=analysieren)

    hi,

    ich suche eine Funktion die den inhalt zwischen zwei html-tags ausgibt.
    Beispiel

    <title>Marlem-Software</title>

    wer weiss wie man sowas programmiert. bin etwas eingerostet, habe seit 2 jahren nicht mehr c# gecodet.

    LG


    • IP-Adresse ist Registriert
  • 01. Aug 2011 6:16 Antwort zu

    • MarkusZywitza
    • Top 75 Mitwirkender
      Männlich
    • Registriert am 15. Jul 2011
    • Aarbergen
    • Beiträge 25
    • Punkte 395

    html-code parsen (=analysieren)

    Hallo 

    schau Dir mal das Projekt hier an:


    Ich habe es verwendet, als ich eine HTML-Table interpretieren (und in eine DB exportieren) musste.

    Gruß,
    Markus
    • IP-Adresse ist Registriert
  • 01. Aug 2011 20:23 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    html-code parsen (=analysieren)

    Danke Namensvetter!

    ich habe folgendes gecodet:
    </div><div><div> //Inhalt zwischen zwei Tags heraus holen</div><div>        private string StringByTag(string BeginnTag,string EndTag, string HTMLZeile)</div><div>        {</div><div>            const string pattern = "<.*?>";</div><div>            return Regex.Replace(HTMLZeile, pattern, string.Empty);</div><div>        }</div><div>
    </div><div>        //Herausfinden ob der gesuchte HTML-Tag in der zeile ist</div><div>        private Boolean HTMLTAG_in(string HTMLTag, string HTMLZeile)</div><div>        {</div><div>            if (HTMLZeile.Contains(HTMLTag) == true)</div><div>                return true;</div><div>            else return false;</div><div>        }</div></div><div>
    </div><div><div> //Liest SEO-Daten aus HTML aus</div><div>        private void SEO_Daten()</div><div>        {</div><div>            for (int i = 0; i <= rtbHTML.Lines.Count(); i++)</div><div>            {   </div><div>                //Seitentitel</div><div>
    </div><div>                if (HTMLTAG_in("<title>", rtbHTML.Lines<img src="http://dotnet-forum.de/emoticons/emotion-55.gif" alt="Idea" />.ToLower()) == true)</div><div>                {</div><div>                    lblTitleText.Text = StringByTag("<title>", "</title>", rtbHTML.Lines<img src="http://dotnet-forum.de/emoticons/emotion-55.gif" alt="Idea" />.ToLower());</div><div>                    //return; </div><div>                }</div><div>
    </div><div>                //meta Descripton</div><div>                if (HTMLTAG_in("description", rtbHTML.Lines<img src="http://dotnet-forum.de/emoticons/emotion-55.gif" alt="Idea" />.ToLower()) == true)</div><div>                {</div><div>                    lblDescriptionText.Text = StringByTag("content=", ">", rtbHTML.Lines<img src="http://dotnet-forum.de/emoticons/emotion-55.gif" alt="Idea" />.ToLower());</div><div>                    lblDescriptionText.Text = rtbHTML.Lines<img src="http://dotnet-forum.de/emoticons/emotion-55.gif" alt="Idea" />.ToLower();                    </div><div>                    return;</div><div>                }</div><div>
    </div><div>            }</div></div><div>
    </div><div>


    Title-tag funzt perfekt, bei der Description gibt es probleme, weil es da wohl unterschiedliche schreibweisen gibt.
    würde es gerne selber coden!!! hat jemand eine Idee?

    • IP-Adresse ist Registriert
  • 01. Aug 2011 21:56 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    html-code parsen (=analysieren)

    habe das hier:
    </div><div><div>private string getdescription(string contents)</div><div>        {</div><div>            Regex pattern;</div><div>            Match match;</div><div>            pattern = new Regex(@"meta name=description content="">([\w\s,.:'-]+)>", RegexOptions.Compiled | RegexOptions.ECMAScript | RegexOptions.Multiline | RegexOptions.IgnoreCase);</div><div>            match = pattern.Match(contents);</div><div>            if (match.Success)</div><div>                return match.Groups[1].Value;</div><div>            else</div><div>                return "none";</div><div>        }</div></div><div>
    </div><div>


    im netz gefunden und habe versucht es um zu bauen. kennt sich jemand mit regulären ausdrücken aus und kann helfen?

    irgendwie klappt das mit dem code-tag nicht. ich poste es mal so:
    private string getdescription(string contents)
            {
                Regex pattern;
                Match match;
                pattern = new Regex(@"meta name=description content="">([\w\s,.:'-]+)>", RegexOptions.Compiled | RegexOptions.ECMAScript | RegexOptions.Multiline | RegexOptions.IgnoreCase);
                match = pattern.Match(contents);
                if (match.Success)
                    return match.Groups[1].Value;
                else
                    return "none";
            }
    • IP-Adresse ist Registriert
  • 09. Aug 2011 21:21 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    html-code parsen (=analysieren)

    Hi,

    habe den Html Agility Pack downgeloadet und als verweis hinzugefügt. war das richtig?
    wie funzt nun das parsen von der meta description?


    • IP-Adresse ist Registriert
  • 10. Aug 2011 10:19 Antwort zu

    • MarkusZywitza
    • Top 75 Mitwirkender
      Männlich
    • Registriert am 15. Jul 2011
    • Aarbergen
    • Beiträge 25
    • Punkte 395

    html-code parsen (=analysieren)

    Folgendes Beispiel beschreibt relativ genau Deine Anforderungen:


    Gruß,
    Markus
    • IP-Adresse ist Registriert
  • 13. Aug 2011 20:50 Antwort zu

    • marlem
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 13. Aug 2008
    • Reutlingen
    • Beiträge 172
    • Punkte 2.730

    html-code parsen (=analysieren)

    Hallo liebes Forum!

    nach einigen recherchieren habe ich es ohne Komponente geschafft:

     //liest die Meta-Angaben aus einer Webseite aus
            private void DisplayMetaTags()
            {
                if (webBrowser1.Document != null)
                {
                    HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("META");
                    foreach (HtmlElement elem in elems)
                    {
                        
                        String nameStr = elem.GetAttribute("name").ToLower();
                        if (nameStr != null && nameStr.Length != 0)
                        {
                            if (nameStr == "description") 
                            { 
                               String contentStr = elem.GetAttribute("content");
                               lblDescriptionText.Text = contentStr;
                            }

                            if (nameStr == "keywords")
                            {
                                String contentStr = elem.GetAttribute("content");
                                lblkeywordstext.Text = contentStr;
                            }
                           

                        }
                    }
                }
            }

    Das gemeine war, dass es HTMLDocument-Objekt gibt, dass danach "riecht" auch an die tags ran zu kommen.
    habe aber keine Möglichkeit gefunden.
    egal, der code funktioniert!

    • IP-Adresse ist Registriert
Seite 1 von 1 (14 Treffer)

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum