LabVIEWForum.de
Webseitenabfrage - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Webseitenabfrage (/Thread-Webseitenabfrage)

Seiten: 1 2


Webseitenabfrage - zwerg123 - 15.12.2011 14:24

Hallo liebe LabVIEWFORUM-Gemeinde,

ich würde gerne ein Programm erstellen, dass es mir ermöglicht einen char-string an eine Webseite, wie z.B. amazon zu schicken und mir dann ein Ergebnis, wie z.B. den Preis des bei amazon angebotenen Produkts zurück gibt.
Erstaml geht es mir darum eine Webseite anzusteuern, also wie z.B. die der Wetterstation meiner Uni um mir dann die Werte in meinem Vi ausgeben zu lassen.

Ich habe schon ziemlich lange nach Beispielen oder Anleitungen gesucht, leider bis jetzt noch nichts passendes gefunden,ich glaube mir fehlt da das passende Schlagwort.

Ich würde mich sehr freuen, wenn mir jemand Tipps geben könnte, nach was ich da genau suchen muss, bzw. wo ich Informationen dazu finde.

Vielen Dank

Gruß


RE: Webseitenabfrage - gentos - 15.12.2011 16:07

Wie Du das genau hinkriegen willst/kannst weiß ich leider auch nicht. Als Ansatz kann ich dich nur auf die LabVIEW-Module unter Datenkommunikation -> Protokolle -> HTTP Client verweisen. Mit diesen Modulen kannst du, unter Eingabe einer URL, Server ansprechen (Daten senden und Daten empfangen).
Du kannst dir somit natürlich den gesamten html Code einer Seite als String in LabVIEW anzeigen lassen.

Jetzt kommt der spannende Teil:

Du willst eigentlich, um es auf den Punkt zu bringen, einen web Browser programmieren.
Entweder du begrenzt dein Programm auf eine bestimmte Sache wie z.B. Wetterabfrage von einer konkreten Seite und baust ein Filter, das Dir dann die Wetter-Info aus dem empfangenen html-Code zusammensucht oder Du beschäftigst dich ausführlich mit dem gesamten Thema indem Du dem unter der Hilfe, zu einem vi der oben beschriebenen vi-Gruppe angegebenen link, auf http://www.w3.org folgst um dort nachzuvollzieen, welche Daten du an den Server senden musst um bestimmte Antworten zu erhalten und vor allem wie du die Antworten interpretierst (sorry für den besch... Satz).

Das Thema ist mit Sicherheit nicht uninteressant und ich hoffe jemand kann Dir mehr helfen als ich.

Auf jeden Fall freue ich mich auf einen Bericht von dir, wenn du es geschaft hast.

Viel Erfolg!


RE: Webseitenabfrage - gentos - 15.12.2011 16:42

Sorry, den Inhalt der Seite bekommst du über: Konnektivität -> Internet -> URL Client


RE: Webseitenabfrage - zwerg123 - 16.12.2011 12:23

Hallo Gentos,
vielen Dank für deine Tipps. URL-Client war das Zauberwort, dass mir gefehlt hat. Darauf hin bin ich nun auf diesen Thread gestoßen, der mich fürs Erste mit allem Wissenswerten versorgt hat. http://www.labviewforum.de/archive/index.php/thread-4656-1.html Leider ist dazu das Internet-Toolkit nötig, was jetzt meine Projektzeit auf 1 Monat verkürzt. Allerdings wird dort auch noch eine Methode erwähnt, mit Hilfe derer man einen URL-Client mittels Data Sockets erstellen kann. Damit werd ich mich bei Gelegenheit auch noch auseinandersetzen, bin ziemlicher LV-Anfänger.

Leider sind die Ergebnisse bei den von mir angewählten Seiten utf-8 verschlüsselt, da werd ich jetzt als nächstes erst eine Methode zum entschlüsseln basteln müssen. Mal schauen was bei rum kommt.

Gruß


RE: Webseitenabfrage - gentos - 16.12.2011 12:50

Danke für die Rückmeldung!

Freut mich dass Du fündig geworden bist. Wär echt cool wenn du irgendwann deinen Ansatz postest.

Viel Erfolg!


RE: Webseitenabfrage - zwerg123 - 19.12.2011 15:10

Liebe LabVIEW-Gemeinde,

nachdem sich UTF-8 Entschlüsselung als Nonsense herausgestellt hat. Habe ich mich weiter durchgewurstelt und stehe nun vor folgendem Szenario:

Im html code der Seite die ich auslesen möchte befindet sich die Zeile:
PHP-Code:
</object></div><span id=result_box class="short_text"></span></div
in der sich mein gesuchter Wert befindet. Um diesen auslesen zu können habe ich nun mehrere Methoden, programmiert in Java oder VisualBasic, gefunden.

Fragen: Kann ich eine solche Abfrage auch direkt aus LabView tätigen?
Wenn nein, wie könnte ich den Code dann am besten in LabView implementieren?

Würde mich freuen, wenn dazu jemand was posten könnte.

Gruß

Methode Java:
http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id
http://de.selfhtml.org/javascript/objekte/node.htm#first_child
http://de.selfhtml.org/javascript/objekte/node.htm#data

Methode Visual Basic:
Code:
Imports System.Net

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Neuen Webclient deklarieren
        Dim w As New WebClient
        'Quelltext downloaden => String
        Dim quelltext As String = w.DownloadString("http://www.web.de")
        'Wert filtern
        Dim WertRegex As New System.Text.RegularExpressions.Regex("<span>(?<Wert>(.*))</span>")
        'Wert mit hilfe von Pattern im Quelltext suchen => auswerten
        Dim Wert As String = WertRegex.Match(quelltext).Groups("Wert").ToString()
'Als Beispiel in richtextbox ausgeben:
        RichTextBox1.Text = Wert
    End Sub
End Class



RE: Webseitenabfrage - snuz - 19.12.2011 15:19

Du könntest einmal ein Browser in LabView programmieren =) oder Du nutzt die WinAPI. Damit kann man Fensterinhalte auslesen oder den Fenstern Werte übergeben. In deinem vorherigen Post steht ja schon isChild, Objekt...byID (HandleID), damit kann man alle Windows auslesen. Zu finden sind diese Funktionen in der user32.dll und erklärt werden diese unter msdn.com.

Gruß snuz


RE: Webseitenabfrage - unicorn - 20.12.2011 12:25

Die Geschichte mit dem Fensterauslesen ist im weitesten Sinne nur ein Workaround für das Internettoolkit und rechnet sich nicht.

Eine HTML-Seite, die auf dem Rechner in einer Datei liegt, kannst Du als Text-Datei öffnen und nach den gewünschten Strings durchsuchen.

Die HTTP-Client-VIs sind laut meiner Hilfe (Lv10) im Base-Package enthalten. Damit sollte es möglich sein, eine Web-Seite zu empfangen. Erfahrung habe ich damit allerdings noch keine.


RE: Webseitenabfrage - gentos - 21.12.2011 08:18

So,

hab mal auf die schnelle zwei VI's zusammengeklickt. Beide benötigen das Internet Toolkit nicht.
Das hier:
[attachment=37791]
ist dazu da, um den HTML-Code einer Seite zu lesen und daraus den Inhalt eines Tags (so heißen glaub ich die Befehle in HTML) zu extrahieren. Als Standardwerte sind dabei der String: <img src" und der String " eingetragen. Dies ist der Befehl für das einbinden von Images (JPEG, PNG ...). Somit gibt das VI alle (oder die vorgegebene Anzahl)
Links zu den auf der Seite verfügbaren Grafiken. Wählt man also für Start und Stop String andere HTML Tags, sollte dann auch die entsprechende Info rausgefiltert werden können.

Dieses VI:
[attachment=37792]
sucht nach dem sogenannten Anker. Es ist in HTML so eine Art Stammverzeichnis. Die Links mancher Grafiken werden relativ zu dem Anker angegeben und müssen, um auf sie zugreifen zu können, an den Anker angehängt werden.

Getestet habe ich das mit der Seite http://www.labviewforum.de und irgend einem Thread. Dabei bekam ich die links alle Grafiken heraus (LabVIEW Logo, Die Flaggen der User...) nur um die Links für die Avatare der User zu erhalten, brauchte ich den erwähnten Anker.

Super übersicht zu den HTML-Tags findet man auf html-seminar.de

Sollte jemand die VI's weiterverarbeiten wollen, bitte das Ergebnis hochladen und teilen;-)


RE: Webseitenabfrage - zwerg123 - 16.02.2012 23:15

Hallo Leute,

nachdem mein Projekt jetzt schon seit knapp einem Monat im Kasten ist, wollte ich mich noch bei euch allen recht Herzlich bedanken. Ihr habt mir sehr viel weiter geholfen, auch wenn mich nicht alles zum Ziel geführt hat, so habe ich doch jede Menge gelernt. Vielen Dank dafür.

Lohn der ganze Mühe ist nun ein Programm, dass es einem ermöglicht, markierte Wörter durch drücken der Shift-Taste von einer Sprache in eine Andere zu übersetzen (mittels google-translate) und das Ergebnis mittels Pop-Up erscheinen zu lassen ohne den Arbeitsfluss dafür unterbrechen zu müssen.

Dazu hab ich einen Webbrowser programmiertWink Wie es funktioniert seht Ihr bei Interesse bestimmt besser, als das ich es beschreiben kann.

@gentos ich habe deine Methode zum suchen von Strings eingefügt verdoppelt und in T-Rex umbenannt, hoffe das ist Ok.

Gruß

[attachment=38703]
[attachment=38702] sub Vi.