Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Einzelne Werte aus HTML-Text auslesen?
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

Einzelne Werte aus HTML-Text auslesen?

beantworten | zitieren | melden

Also ich hab ein Problem: Ich muss bei meinem Ferialpraktikum in der Wiener Börse ein Programm schreiben, das Elemente aus der Website von der Wiener Börse ausließt: Aktienkurs, Datum und so weiter. Ich schaffe es zwar den Quellcode der Website auszulesen, nur ich bekomme es nicht hin einzelne Werte auszulesen und in dem Programm als Variablen zu speichern und zu verwenden.

Ich würde mich sehr über Antworten freuen und natürlich auch für eine Lösung ;)

Mit freundlichen Grüßen
Kaboom
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Musst das HTML parsen und die entsptrechenden Daten extrahieren. Auf codeplex gibts nen HTML Agility Pack welches nen recht netten HTML Parser enthält. Könnte eventuell nützlich sein da ja leider weniger Seiten xhtml konform sind als man gern hätte.

Hatte vor kurzem ne ähnliche Aufgabe wo ich Glück hatte, dass die gesuchten Tags schön per class Attribut gekennzeichnet waren und so per XPath vom oben genannten Parser extrahiert werden konnten und man dann leicht per Regex aus diesen Tags die Infos extrahieren konnte.
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
Blue_Dragon
myCSharp.de - Member



Dabei seit:
Beiträge: 198
Herkunft: Österreich

beantworten | zitieren | melden

Hallo,

hier mal zwei links die dir helfen sollten:

Hier einmal etwas zur Theorie von Regulären Ausdrücken

http://de.wikipedia.org/wiki/Regex

und hier wie man es in .NET anwedet.

Regular Expression Classes

Ich hoffe das hilft =)

Liebe Grüße
Matthias
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Also den von talla vorgeschlagenen Weg kann ich nur wärmstens empfehlen. Wenn du ohne externe Libraries auskommen musst/möchtest kannst du auch IHTMLDocument von MS benutzen (IHTMLDocument2 Interface) ist aber nicht so schön zu benutzen und auch nicht das schnellste.

Das nur so als Ergänzung.
Achso, an das Ding kommst du auch vom WebBrowser-Control aus.
private Nachricht | Beiträge des Benutzers
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

beantworten | zitieren | melden

Danke für die schnellen Antworten

Ihr habt mir sehr geholfen!

Mfg.
Kaboom
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

beantworten | zitieren | melden

Nochmal Danke für die Antworten!

Ich stehe gerade leider trotzdem noch an...ich schaff diesen Regex code nicht :(
Ich muss aus folgender Seite die ISIN Nummer auslesen:
Wiener Börse

Könnte mir dabei vielleicht jemand helfen?
Ich bin sehr dankbar für jede Antwort :)

Mfg.
Kaboom
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Kaboom,

da wir kleine Pattern-Produzier-Maschine sind :-) kannst du dir in erster Linie selbst helfen. Regex ist ganz einfach. Natürlich muss man sich da erstmal einlesen, wozu ein paar Minuten vollkommen ausreichend snid. Dazu gibt es z.B. das [Artikel] Regex-Tutorial. Eine Investition die unbedingt lohnt, denn Regex macht einem das Leben wirklich leichter. Ich benutze Regex seit 25 Jahren immer wieder gerne.

herbivore
private Nachricht | Beiträge des Benutzers
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

beantworten | zitieren | melden

Danke für die Antwort :)
Ich hab jetzt leider noch immer folgendes Problem: Ich versteh nicht wie ich das am besten Anwenden soll...Ich hab mir dieses HTML Agility Pack runtergeladen. Doch ich versteh nicht wie man das Anwendet? Außerdem bekomme ich immer eine fehlermeldung wenn ich dies öffnen will, da ich die neue Version von VS habe. Die 2008er. Und dann das Programm die Files irgendwie konvertieren will...wenn das geschafft ist, dann bekomme ich folgende fehlermeldung:
Attachments
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

beantworten | zitieren | melden

Ich hoffe ihr könnt mir weiter helfen :)
Ich hab echt voll den Zeitdruck deswegen...die warten alle schon auf das programm^^

Mfg.
Kaboom
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
gnc
myCSharp.de - Member

Avatar #avatar-2745.jpg


Dabei seit:
Beiträge: 125
Herkunft: München

beantworten | zitieren | melden

Zitat von Kaboom
Danke für die Antwort :)
Ich hab jetzt leider noch immer folgendes Problem: Ich versteh nicht wie ich das am besten Anwenden soll...Ich hab mir dieses HTML Agility Pack runtergeladen. Doch ich versteh nicht wie man das Anwendet? Außerdem bekomme ich immer eine fehlermeldung wenn ich dies öffnen will, da ich die neue Version von VS habe. Die 2008er. Und dann das Programm die Files irgendwie konvertieren will...wenn das geschafft ist, dann bekomme ich folgende fehlermeldung:

Eine Klassenbibliothek kann man nicht ausführen. Du musst bzw. kannst das Projekt in dein eigenes Projekt hinzufügen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von gnc am .
private Nachricht | Beiträge des Benutzers
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

beantworten | zitieren | melden

Achso...jetzt verstehe ich^^ das heißt ich muss das HTML Agility Pack in meinem Programm aufrufen.

Danke^^

Mfg.
Kaboom
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
Sekkiy
myCSharp.de - Member



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

naja, steht doch im bild. das ist eine klassenbibliothek, und du versuchst sie auszuführen, was natürlich nicht geht. du musst ein ausführbares projekt hinzufügen und als startprojekt setzen.
das mit dem konvertieren ist ganz normal, das kommt immer wenn projekte mit einer älteren version als deine erstellt wurde

edit: zu langsam :( ja, natürlich musst du es aufrufen, woher soll es denn wissen was es machen soll.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Sekkiy am .
private Nachricht | Beiträge des Benutzers
talla
myCSharp.de - Experte

Avatar #avatar-3214.jpg


Dabei seit:
Beiträge: 6.862
Herkunft: Esslingen

beantworten | zitieren | melden

Tja, für den Zeitdruck können wir nichts :)

Das Html Agility Pack ist nunmal ne Klassenbibliothek die dir Klassen zur Verfügung stellt die du benutzen kannst. Die kann man natürlich nicht wie irgend ein Programm starten. Diese Fehlermeldung hat nichts mit irgend ner VS Version zu tun oder sonstwas. Das Konvertieren ist normal, ist leider schon nen älteres Projekt.

Das Anwenden ist im Prinzip ganz leicht, brauchst nur sowas wie:


HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(new WebClient().DownloadString(_url));
HtmlNodeCollection soups = doc.DocumentNode.SelectNodes("//td[@headers='suppe']");
Das SelectNodes gibt er dir alle HTML Nodes zurück die der XPath Ausdruck selektiert. Hab mir mal die Mühe gemacht den Source der Seite anzuschaun wo du drauf zugreifen willst. Sieht doch gar nicht so schlecht aus. Die meisten Tags scheinen ja mit Attributen versehen zu sein wie innerOnUpdate oder classOnUpdate woran du die einzelnen Werte unterscheiden kannst. Und die Werte stehen soweit ichs auf den ersten Blick gesehen hab direkt als Tag Inhalt ohne was anderes drin. Dann bräuchtest du noch nicht mal groß Regex wenn die Werte von sich aus losgelöst drin stehen.
Baka wa shinanakya naoranai.

Mein XING Profil.
private Nachricht | Beiträge des Benutzers
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

beantworten | zitieren | melden

Dankeschön für die vielen Antworten :)
Ich werde mal weiter machen und im Notfall muss ich euch leider wieder stören ^^

Mfg.
Kaboom
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
Kaboom
myCSharp.de - Member

Avatar #avatar-2916.jpg


Dabei seit:
Beiträge: 148
Herkunft: Wien

Themenstarter:

beantworten | zitieren | melden

Letzte Frage^^
Ich hab das HTML Agility Pack hinzugefügt. was muss ich machen damit mein programm auf die klassenbibliothek zugreift? sowas wie using HTMLagilitypack?

Mfg.
Kaboom
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Zitat
wie using HTMLagilitypack
ja, auch. Erst wirst du wohl eine Referenz hinzufügen müssen.

Aber das gehört zu den Grundlagen. Solche Fragen würden sich erübrigen wenn du ein Buch wie dieses: durchgearbeitet hättest.

Siehe auch: [Hinweis] Wie poste ich richtig? 1.1.1
private Nachricht | Beiträge des Benutzers