Laden...

Einzelne Werte aus HTML-Text auslesen?

Erstellt von Kaboom vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.464 Views
Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren
Einzelne Werte aus HTML-Text auslesen?

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"

6.862 Beiträge seit 2003
vor 14 Jahren

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.

B
198 Beiträge seit 2005
vor 14 Jahren

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

2.760 Beiträge seit 2006
vor 14 Jahren

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.

Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren

Danke für die schnellen Antworten 👍

Ihr habt mir sehr geholfen!

Mfg.
Kaboom

"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"

Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren

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"

49.485 Beiträge seit 2005
vor 14 Jahren

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

Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren

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:

"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt"

Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren

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"

125 Beiträge seit 2008
vor 14 Jahren

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.

Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren

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"

S
21 Beiträge seit 2009
vor 14 Jahren

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.

6.862 Beiträge seit 2003
vor 14 Jahren

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.

Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren

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"

Kaboom Themenstarter:in
148 Beiträge seit 2009
vor 14 Jahren

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"

2.760 Beiträge seit 2006
vor 14 Jahren

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