[VB] Änderebare Werte aus HTML Code holen

07/13/2013 01:48 Benjihz#1
Hey,
Ich hab vor ein Programm zu schreiben das von einer bestimmten Website einen Wert raussucht, und denn mir in z.B einer MessageBox ausgibt. Dieser Wert verändert sich in unbestimmten Zeiträumen, das Tool muss den Wert also bei jedem klick auf aktualisieren neu laden können, um zu gucken ob er sich verändert hat.

Von deartigen Projekten mit Internet undso hab ich nicht so die Ahnung. Kann mir da villt jmd nen Ansatz geben?

MfG
07/13/2013 02:31 tolio#2
per webrequest die seite laden und dann per regex oder split den wert raussuchen
07/13/2013 14:18 Benjihz#3
Quote:
Originally Posted by tolio View Post
per webrequest die seite laden und dann per regex oder split den wert raussuchen
Per Webrequest in einen Browser laden ?
07/13/2013 14:25 dready#4
Brauchst keine Browserkomponente, ist auch nicht sonderlich elegant ;)

Das hier meinte tolio

[Only registered and activated users can see links. Click Here To Register...]
07/13/2013 14:27 snow#5
Lass den Browser raus, das ist kacke. Schau dir die WebRequest Tutorials hier in der Sektion an. Du musst dir im Prinzip immer beim Klick auf Aktualisieren den alten Status speichern, die Daten laden und dann den neuen Status vergleichen.

Um an die Daten zu kommen: Du kannst es natürlich über Regex oder Split machen, ich würde hier aber eher zu XPath greifen, gefällt mir persönlich besser, kommt aber auf den Umfang des Projekts drauf an.
07/14/2013 11:15 Benjihz#6
Gibt es einen Unterschied zwischen WebRequest und HttpWebRequest?
07/14/2013 15:56 Lasch24#7
Quote:
Originally Posted by xKnixXeD View Post
Gibt es einen Unterschied zwischen WebRequest und HttpWebRequest?
Kurz mal Google benutzt..

HttpWebRequest kann nur Anfragen über das http-Protokoll übermitteln, WebRequest unterstützt auch weitere Protokolle (ftp u.a.)
07/14/2013 16:51 Kraizy​#8
Quote:
Originally Posted by xKnixXeD View Post
Gibt es einen Unterschied zwischen WebRequest und HttpWebRequest?
[Only registered and activated users can see links. Click Here To Register...]
hier, durchlesen und evtl. einen Blick auf die Vererbungen werfen.
Wie du siehst, gibt es eine Ftp-, Http-, .. WebRequest-Klasse. Benutz das 2. und gut is.
Falls du lustig bist, kannst du dir ja auf Wikipedia noch den Artikel zu Abstrakten Klassen durchlesen.
07/14/2013 20:27 SupplyX#9
Ich würde am Anfang nicht zum Webrequest empfehlen. Es ist die sauberste Lösung über VB, allerdings finde ich es persönlich am Anfang recht schwer.


Du kannst das über das Webbrowser Element ausführen .. Dir den verfügbaren String als .txt speichern und die Datei nach einem beliebigen String durchsuchen / kürzen..

Ich habe damals so angefangen..

Notwendig hierfür ist, ein Webbrowser Element und ein Command Button!! =) am ende des Subs könntest du dann sagen MsgBox("Ihre suche ergab" & Textgekuerzt) oder List1.Additem(Textgekuerzt) oder Text1.text = Linkgekuerzt .. Whatever


Ich hoffe ich helfe damit irgednwie.. =) Ich denke das viele Programmierer jetzt aufschreien werden.. Für mich war es damals so am einfachsten ..


Quote:
Private Sub Form_load

Text = quelltextlesen([Only registered and activated users can see links. Click Here To Register...]) ' Beispiel!!!
Textgekuerzt = kuerzetext(Text, "suche1", "suche2")
End Sub

_______________________
Private Function quelltextlesen(adresse As String) As String

URL_Load adresse

SaveQuelltext App.path & "\Data\quelldatei.txt"

quelltextlesen = lese_quelltext(app.path & "\Data\quelldatei.txt")
End Function

Private Function kuerzetext(txt As String, such1 As String, such2 As String) As String


stelle = InStr(1, txt, such1)
stelle2 = InStr(stelle, txt, such2)

stelle = stelle + Len(such1)
txt64 = Mid(txt, stelle, stelle2 - stelle)


kuerzetext = txt64
End Function

Private Sub URL_Load(ByVal sURL As String)
Dim sQuelltext As String
With WebBrowser1
.Tag = "Load"
.Navigate sURL
waitok = "ne"

Command1.Enabled = False
Do
DoEvents
Loop Until WebBrowser1.Busy = False
Command1.Enabled = True
End With
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, url As Variant)
' Prüfen, ob Seite vollständig geladen ist
On Error Resume Next
Command1.Enabled = True

End Sub
Private Sub SaveQuelltext(ByVal sFilename As String)
Dim F As Integer

With WebBrowser1.Document.DocumentElement
F = FreeFile
Open sFilename For Output As #F
Print #F, .outerHTML;
Close #F
End With
End Sub

Private Function lese_quelltext(dateiname As String)
Dim fso As New FileSystemObject

Set fp = fso.OpenTextFile(dateiname, ForReading, True)
lese_quelltext = fp.ReadAll()
lese_quelltext = Replace(lese_quelltext, """", "") 'entfernt alle (")
fp.Close

End Function
07/14/2013 20:32 Benjihz#10
Quote:
Originally Posted by SupplyX View Post
Ich würde am Anfang nicht zum Webrequest empfehlen. E ist die sauberste Lösung über VB, allerdings finde ich es persönlich am Anfang recht schwer.


Du kannst das über das Webbrowser Element ausführen .. Dir den verfügbaren String als .txt speichern und die Datei nach einem beliebigen String durchsuchen / kürzen..

Ich habe damals so angefangen..
Hmm. Dann müsste ich den HTML Code von der Website in der txt speichern, wie soll ich das anstellen. Ich hab das ganze soweit das die Website im Webbrowser geladen wird, jetzt musd ich nurnoch irgendwie an den HTML Code und diesen abspeichern.
07/14/2013 20:45 SupplyX#11
Da stehts doch
...

Ganz einfach =) Kopier das alles mal in ein Projekt...

Und benenne dein Webbrowser "Webbrowser1", mach einen Command Button der "Command1" heißt.

Dann speicher das PRoejtk auf dem Desktop in einem Ordner ab und mach bei Sub Form Laod nen stoppunkt und verfolge die einzelnen Schritt mit "F8"
07/14/2013 21:14 Kraizy​#12
Quote:
Originally Posted by SupplyX View Post
Ich würde am Anfang nicht zum Webrequest empfehlen. Es ist die sauberste Lösung über VB, allerdings finde ich es persönlich am Anfang recht schwer.
Meiner Meinung nach sollte man am Anfang (eig immer, mach ich zumindest so) eher auf den WebBrowser verzichten. Wozu sich vorher unnötig schlechte Vorgehensweise aneignen?
Mit Webrequests sind das max 3 Zeilen.
Get Anfrage an den jeweiligen Link senden und den Quelltext splitten, mehr ist das nicht.