Bestimmte Daten Auslesen

styler2go

Erfahrenes Mitglied
Hallo
Ich möchte von einer Website zbs. den Teil zwischen <title> und </title> auslesen.
In diesem fall wäre es ja der Titel...
Leider weiß ich nicht wie ich jetzt einen bestimmten teil auslesen kann.
Die Seite downloaden und in einen String laden habe ich wie folgt gemacht:
Code:
        My.Computer.Network.DownloadFile("http://server.dyndns.tv/test.htm", My.Computer.FileSystem.SpecialDirectories.Temp & "/tempor")
        Dim Dat() = File.ReadAllLines(My.Computer.FileSystem.SpecialDirectories.Temp & "/tempor")
        File.Delete(My.Computer.FileSystem.SpecialDirectories.Temp & "/tempor")
        RichTextBox1.Lines = Dat

Könnt ihr mir weiterhelfen?
MFG Styler2go
 

ripkens

Erfahrenes Mitglied
Du könntest ein verstekctes Webbrowser Control ins Form einfügen und die URL in den Webbroeser laden.

Anschliessend kannst Du die Elemente auslesen:

Code:
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If (pDisp Is WebBrowser1.object) Then
MsgBox(WebBrowser1.Document.All("title").innerHTML)
End If
End Sub
 

styler2go

Erfahrenes Mitglied
Das schon, nur das mit dem Titel ist ja nur ein beispiel.
Aber ich werde deinen Tipp gründlich Testen.
Vielen dank!

MFG Styler2go
 

Masterclavat

Erfahrenes Mitglied
Wenn du den Quelltext schon in einen String gespeichert hast, kannst du es mit RegEx lösen:
Code:
Dim Titel As String = System.Text.RegularExpressions.RegEx.Match(Quelltext, "<title>(.*?)</title>").Groups(1).Value


Grüße
 

styler2go

Erfahrenes Mitglied
Ich danke dir vielmals!
Damit fuktzionert der Titel nun.
Nur leider kann ich keine, durch id's bestimmte, div-tags auslesen.
Beispiel:

Auf einer Homepage sind 2 div-tags. der eine hat die ID "test1", der andere die ID "test2" also:

Code:
<title>Willkommen!</title>
<div id="test1" style="width: 100px; right: 20%; float: left;">Test1</div>
<div id="test2" style="width: 100px; right: 20%; float: right;">Test2</div>

Änder ich den Code nun aber in
Code:
            Dim inhalt As String = System.Text.RegularExpressions.Regex.Match(Dat, "<div id=""test1"" (.*?)</div>").Groups(2).Value
zeigt er mir nichts an.

Wisst ihr wie ich nun immer nur ein div Tag auslese?
Eine testseite habe ich hier gehostet: Klick
 
Zuletzt bearbeitet:

Masterclavat

Erfahrenes Mitglied
Probiers mal mit
Code:
Dim inhalt As String = System.Text.RegularExpressions.Regex.Match(Dat, "<div id=""test1"" (.*?)</div>").Groups(1).Value
;)
 

styler2go

Erfahrenes Mitglied
Hmmm... nun zeigt er mir leider noch folgendes an:

Code:
style="width: 100px; right: 20%; float: right;">

Kann man das auch noch entfernen lassen?

Habe schon ein paar Sachen versucht, aber er hat mir dann immer entweder nichts oder einen Fehler angezeigt.

MFG Styler2go
 

Masterclavat

Erfahrenes Mitglied
Was möchtest du denn angezeigt bekommen? Nur den Inhalt?
Dann so:
Code:
Dim inhalt As String = System.Text.RegularExpressions.Regex.Match(Dat, "<div id=""test1"".*?>(.*?)</div>").Groups(1).Value

Hattest den tag nicht geschlossen. ;)
 

styler2go

Erfahrenes Mitglied
Seltsam...
Ich verstehe das einfach nicht...
Wenn ich das über meine Testseite mit gerade einmal 2 div's mache, geht alles bestens.
Sobald ich aber eine Seite mit mehr div-tags gehe (zbs. youtube, google) zeigt er mir einfach nichts an.
Hier nochmal der gesamte Code:
Code:
        If Not TextBox1.Text.StartsWith("http://") Then
            MsgBox("No Valid URL")
        Else
            My.Computer.Network.DownloadFile(TextBox1.Text, My.Computer.FileSystem.SpecialDirectories.Temp & "/tempor")
            Dim Dat = File.ReadAllText(My.Computer.FileSystem.SpecialDirectories.Temp & "/tempor")
            File.Delete(My.Computer.FileSystem.SpecialDirectories.Temp & "/tempor")
            RichTextBox1.Text = Dat.Replace("<br />", vbcr)
            Dim Titel As String = System.Text.RegularExpressions.Regex.Match(Dat, "<title>(.*?)</title>").Groups(1).Value
            Dim inhalt As String = System.Text.RegularExpressions.Regex.Match(Dat, "<div id=""" & TextBox2.Text & """.*?>(.*?)</div>").Groups(1).Value.Replace("<br />", vbCr)
            Dim inhalt2 As String = System.Text.RegularExpressions.Regex.Match(Dat, "<div id=""test2"".*?>(.*?)</div>").Groups(1).Value.Replace("<br />", vbCr)
            Me.Text = Titel
            RichTextBox1.Text = inhalt & vbCr & "---------" & vbCr & inhalt2
        End If

Wisst ihr woran das liegen könnte:confused:
Ich danke für jede Hilfe schonmal! :)