Wie zu Lesen ist-element-Inhalt von web-Seite, die mithilfe der WPF WebBrowser-Komponente
Wie bekomme ich den Wert des Elements aus der web-Seite in C# mit der WPF WebBrowser-Komponente?
Zum Beispiel möchte ich, um diesen Wert 1.7655 von dieser Seite http://www.forexpros.com/currencies/usd-gel.
Dank
- Komm downvoters - du bist nicht gehen, um Menschen zu ermutigen, zu verbessern, Ihre Fragen, wenn Sie nicht sogar sagen "zu ungenau", "nicht eine wirkliche Frage" oder auch einfach "RTFM". Geben Sie dem Kerl einige Hinweise.
- Säure, überlegen, etwas code zu zeigen, was Sie versucht haben. Sehen Sie sich auch in den Quelltext der Seite, die Sie zur Verfügung gestellt:
<span id="last_last" class="arial_24" style="font-weight: bold;">1.7655</span>
Wie Sie sehen können, den span idlast_last
sollten Sie in der Lage zu nutzen. - In der Zwischenzeit, hier sind ein paar andere Fragen von Interesse, die helfen können: 1, 2 3
- Säure-Zitat Hinzugefügt, die tags
wpf
undwebbrowser
die sind sehr wichtig, um die Frage zu beantworten. Bitte entfernen Sie Sie nicht. - Diese Frage ist interessant, weil die Säure verwendet, die WPF WebBrowser, die unvollständig ist: Sie kann nicht analysiert werden der Baum des HtmlElements leicht, da die Document-Eigenschaft ist einfach ein Objekt. So habe ich den Begriff "WPF WebBrowser" auf die Frage, (diese Worte wurden nur tags vor).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem Aufruf der
Navigate
Methode derWebBrowser
- Komponente von WPF, eine Webseite zu öffnen, dieDocumentCompleted
Ereignis eintrifft, und Sie können sicher durchsuchen Sie den Inhalt der Seite (beachten Sie, dass manchmal dieses Ereignis tritt mehrfach auf). DieDocument
Eigenschaft vonWebBrowser
enthält den HTML-Code in einer bereits verarbeiteten format, genannt der DOM-Baum. Leider können Sie mit dieser Eigenschaft ganz einfach, da es nur eineobject
. Diese Funktion wurde nicht abgeschlossen in WPF (Dezember 2011).Ich würde das Winforms-version von
WebBrowser
statt. Sie können es verwenden, in einer WPF-Anwendung, wenn Sie Betten es in eineWindowsFormsHost
. Diese Klasse ist abgeschlossen: seineDocument
Eigenschaft ist eineHtmlDocument
Objekt mit einerBody
Eigenschaft, die eineHtmlElement
, die enthält den Inhalt der Seite. Sie können zu Fuß den DOM-Baum rekursiv zu finden das element, das Sie wollen (und Lesen Sie seineInnerText
), oder einfach der Prozess der text der gesamten Seite mit Hilfe von Regex oder ein HTML-parser-Bibliothek.Für die WPF -
WebBrowser
's content fand ich diese Lösung irgendwo, und das scheint zu funktionieren, aber nur, wenn das Ziel-Framework ist mindestens .Net 4.0 verwenden und SieMicrosoft.CSharp.dll
(die nicht ausgewählt werden, wenn das Ziel-framework <4.0). Ich habe es in derLoadCompleted
:Hinzufügen,
nach
InitializeComponent()
zu sein, dass die Methode aufgerufen wird.Gibt es nicht einen generischen Weg, um einen Wert aus einer zufälligen element - Sie müssen wissen, die HTML-Struktur der jeweiligen Seite, und so finden Sie das element, das Sie suchen. Aber wenn Sie wissen, sowohl von denen, die Sie Lesen können, die Seite in eine Art von HTML-Dokument (
XmlDocument
funktionieren würde, wenn es eine Garantie dafür, dass die HTML-Strukturierung korrekt) und dann Holen Sie sich den Wert von dort aus.Optional können Sie die Seite durch eine Art der HTML-Bereinigung (vielleicht NTidy?) und dann laden Sie Sie in ein XmlDocument. Ein Nachteil eines solchen Ansatzes ist die Struktur der Seite ändern sich möglicherweise während der Bereinigung.
Haben Sie mehrere Möglichkeiten zum Lesen eines Wertes aus einer Webseite.
Also, Sie sehen, Sie haben viele Möglichkeiten und finden Sie Ihre gewünschte Wert (Und ich denke, dass nicht alle Optionen).
So, gehen Sie voran und verbringen einige Anstrengungen unternommen, um diesen Wert. Und, wenn Sie haben Sie eine Frage zu einem bestimmten problem haben, zögern Sie nicht und Fragen Sie wieder auf Stack Overflow. Aber bitte, verbringen Sie einige Zeit in die Formulierung Ihrer Frage. Denken Sie daran: Eine gute Frage, die sehr oft gute Antworten!