in

Auslesen von Internet Quelltextinformationen

Letzter Beitrag 04-23-2010 9:52 von Peter_Punkt. 24 Antworten.
Seite 1 von 2 (25 Treffer) 1 2 > Weiter
Beiträge sortieren: Zurück Weiter
  • 10-17-2008 18:13

    Auslesen von Internet Quelltextinformationen

     Hallo erstmal  ... =)

    Also ich habe mal eine frage,

    ich bin gerade dabei in VB 2008 einen youtube player zu erstellen ..... so jetzt würde ich gerne das in einem label über einen timer der name des youtube videos angezeigt wird.

    Im quelltext steht das:

    id="watch-vid-title" class="title">

     so ist das überhaupt möglich? Und wenn ja wie?  bitte um schnelle antwort! =)

     

    "Ich weiß, dass ich nichts weiß!" - Sokrates
    Abgelegt unter: , ,
    • IP-Adresse ist Registriert
  • 10-17-2008 21:09 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2005/2008/2010, VB.NET, Office 2002, VB6, Win 7
    • Beiträge 1.968

    AW: Auslesen von Internet Quelltextinformationen

    Ja, das ist möglich.

    Du mußt den HTML-Quellcode von der Website laden und dann im WebBrowser1.Document mit RegEx nach dem gewünschten Tag-Muster (Struktur des gesuchten HTML-Tags) durchsuchen.

    Du bekommst dann eine Liste mit einem oder mehreren Treffern, die dem Muster entsprechen.

    Poste doch mal etwas mehr von Deinem Quelltext in dem sich das id="watch-vid-title" class="title">.  

    Ich brauche mindestens das gesamte Tag incl. der < und > und 2 komplette HTML-Tags zuvor und danach, damit ich Dir weitere Tipps geben kann. Werde dann versuchen Dir ein passendes Suchmuster für die Nutzung von RegEx zu machen.

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 10-18-2008 11:07 Antwort zu

    AW: Auslesen von Internet Quelltextinformationen

     Hallo Peter_Punkt,

    ersteinmal vielen dank für deine schnelle Antwort. Entschuldige mich bitte wenn ich etwas.... schwer von begriff bin =) ich weiß nicht ob du das weißt aber eigentlich möchte ich nichts vorher herunter laden. (vielleicht verstehe ich es nur falsch =). Und der Quelltext ja das ist der ganz normale wenn du bei Youtube ein Video aufrufst und dir dann den Quellcode anguckst =) . Ich kenne mich was Quelltexte angeht überhaupt nicht aus ... festehe auch gerade nicht was du mit Tag und so meinst. Ich werde dir die datei mal mitschicken.  http://uploaded.to/?id=iejder.

     

    Und nocheinmal entschuldigung das ich so schwer von begriff bin =)

    mfg Markus

     

    "Ich weiß, dass ich nichts weiß!" - Sokrates
    • IP-Adresse ist Registriert
  • 10-18-2008 11:20 Antwort zu

    • socke
    • Top 10 Mitwirkender
    • Registriert am 04-16-2007
    • VB.Net: Visual Studio 2008 EE
    • Beiträge 373

    AW: Auslesen von Internet Quelltextinformationen

    Html ist eine Auszeichnungssprache, das heißt es ist in sogenannten Tags organisiert, die dem Browser sagen, wie er den Text darstellen soll. Wenn du zum Beispiel eine Überschrift einfügst,

    dann sieht die so aus:

    <h1>Dies ist eine Ueberschrift</h1>

    Dann hast du ein öffnendes Tag und ein schließendes Tag, die zusammengehören.

    In deinem Quelltext der Youtube-Seite, würde ich nach dem <title></title> Tag suchen, womit dem Browser gesagt wird, welche Überschrift er nehmen soll.

    Wenn aus einem Raum mit sieben Leuten acht rausgehen, dann muss einer zurückkommen, damit keiner mehr drin ist.
    • IP-Adresse ist Registriert
  • 10-18-2008 12:11 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2005/2008/2010, VB.NET, Office 2002, VB6, Win 7
    • Beiträge 1.968

    AW: Auslesen von Internet Quelltextinformationen

    Sorry, ich habe mich vieleicht etwas mißverständlich ausgedrückt.

    Was ich sagen wollte ist: wir müssen den Quellcode erst mal auf unseren Rechner bringen, indem wir die youTube-Seite aufrufen und dann den Quellcode (also genau das, was Du beim "Quellcode angucken" siehst) bearbeiten.

    Wenn Du den Quellcode anguckst, dann siehst Du Informationen, die in < und > stehen, das sind die sog. HTML-Tags, z.B. <title>Mein Beispiel</title>

    Die Datei ist leider mit Deiner Antwort nicht dabei. Am besten Du kopierst den ganzen Quellcode in Deine Antwort, auch wenn er umfangreich sein sollte.

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 10-18-2008 12:30 Antwort zu

    AW: Auslesen von Internet Quelltextinformationen

     mh ok sehr umfangreich ist gut =)

    HINWEIS: Quelltext durch Peter_Punkt am 20.10.2008 gekürzt bis auf des Wesentliche 

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">


    <html lang="de">

    <!-- machid: 271 -->
    <head>


    <title>YouTube - Rammstein Benzin</title>

    <link rel="stylesheet" href="http://s.ytimg.com/yt/css/base_all-vfl60020.css" type="text/css">

    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch?locale=de_DE" title="YouTube-Videosuche">
    	<link rel="icon" href="http://s.ytimg.com/yt/favicon-vfl1123.ico" type="image/x-icon">
    <link rel="shortcut icon" href="http://s.ytimg.com/yt/favicon-vfl1123.ico" type="image/x-icon">


    <meta name="title" content="Rammstein Benzin">
    <meta name="description" content="Rammstein BenzinHonors:#58 - Most Viewed (All Time) - Music - Australia#82 - Top Favorited (All Time) - Music - Australia#53 - Top Rated (All Time) - Austral...">
    <meta name="keywords" content="Rammstein, Benzin">

    <link rel="alternate" type="application/rss+xml" title="YouTube - [RSS]" href="/rssls">

    <link rel="alternate" media="handheld" href="http://m.de.youtube.com/watch?desktop_uri=%2Fwatch%3Fv%3D3jwXQFFLSHo%26feature%3Drelated&feature=related&v=3jwXQFFLSHo">
    ' ********* Teile des Quellcodes entfernt **********








    <div id="watch-vid-title" class="title">
    <h1 >Rammstein Benzin</h1>
    </div>
    ' ********* Teile des Quellcodes entfernt ********** 
    </body>
    </html>


     Na dann viel spaß =) aber ich muss mich echt nochmal bei euch bedanken das forum hier ist SUPER =)

    "Ich weiß, dass ich nichts weiß!" - Sokrates
    • IP-Adresse ist Registriert
  • 10-18-2008 16:39 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2005/2008/2010, VB.NET, Office 2002, VB6, Win 7
    • Beiträge 1.968

    AW: Auslesen von Internet Quelltextinformationen

    Danke für den umfangreichen HTML-Quellcode. Ich werden ihn nach Abschluß der Tests kürzen auf das Wesentliche.

    Frage: Wenn ich das Tag <div id="watch-vid-title" class="title"> gefunden habe, soll ich dann den Titel auslesen (in Deinem Beispiel wäre das: Rammstein Benzin)  ???

     

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 10-18-2008 16:46 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2005/2008/2010, VB.NET, Office 2002, VB6, Win 7
    • Beiträge 1.968

    AW: Auslesen von Internet Quelltextinformationen

    @Socke:

    Kleiner Hinweis: der gesuchte Text steht zwischen <h1> und </h1> und enthält viele Spaces zum Einrücken des Quelltextes, er geht über mehrere Zeilen und das StartTag enthält ebenfalls Spaces vor der > (  Beispiel <h1 >  ).

    Deshalb werde ich versuchen das Problem mit RegEx zu lösen, da bin ich flexibler als mit einem String-Search / Instr.

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 10-18-2008 16:47 Antwort zu

    AW: Auslesen von Internet Quelltextinformationen

    Jo genau  =) nur nochmal um das so zu erklähren ich möchte einen youtube player erstellen indem ich im eine textbox eine url eingebe und halt und die musik zu hören ist .... ist soweit auch alles fertig nur soll jetzt noch der titel des Liedes in einem label ... blinken oder halt nur erscheinen mal sehen. 

     

    mfg Markus

    "Ich weiß, dass ich nichts weiß!" - Sokrates
    • IP-Adresse ist Registriert
  • 10-18-2008 19:18 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2005/2008/2010, VB.NET, Office 2002, VB6, Win 7
    • Beiträge 1.968

    AW: Auslesen von Internet Quelltextinformationen

    Ich habe Dir mal ein lauffähiges RegEx-Code-Beispiel mit zahlreichen Kommentaren gemacht. Für Deine Test mußt Du nur die WEBADRESSE ändern.

    Code-Beispiel

    ' Projekt:  HTML-Tags suchen und Infos auslesen
    ' Autor:    Peter Punkt
    ' Version:  01 - 18.10.2008
    ' Problem:  http://www.vb-magazin.de/forums/forums/p/4745/18531.aspx
    
    Option Explicit On
    Option Strict On
    
    Imports System.Text.RegularExpressions
    
    Public Class Form1
    
        Const WEBADRESSE As String = "C:\$PP\YouTubeTest.html"          ' <--- ANPASSEN
    
        Dim rgx As Regex
        Dim HTMLQuelltext As String
        Dim SeiteGeladen As Boolean
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                Handles btn_Start.Click
    
            Dim Suchmuster As String
            Dim Trefferliste As MatchCollection
            Dim Treffer As String
    
            ' Beispiel für die gesuchte Stelle im HTMLQuelltext:
            '   <div id="watch-vid-title" class="title">    <h1 >Rammstein Benzin</h1></div>
    
            ' Bestandteile des Suchmusters:
            '   [a-zA-Z0-9 ]+     Suche mindestens eine Kombination aus Buchstaben, Ziffern und Zwischenräumen
            '                     Zeichen die nicht in den eckigen Klammer aufgeführt sind beenden die Suche 
            '                     und es folgt die Prüfung
            ' Prüfungen:
            '   (?<=    )         Wenn Kombination gefunden, dann LookBack/Zurückschauen (?<=   ), ob ...
            '   class=""title""   ... class="title" am Anfang steht ...
            '   \s*>              ... gefolgt von keinem oder mehreren Spaces bis > kommt ...
            '   \s*<              ... gefolgt von keinem oder mehreren Spaces bis < kommt ...
            '   \s*\w\d           ... gefolgt von keinem oder mehreren Spaces bis Buchstabe und Ziffer kommt ...
            '   \s*>              ... gefolgt von keinem oder mehreren Spaces bis > kommt
            ' Wenn alle diese Überprüfungen erfüllt sind, dann ist die Kombination  ein gültiger Treffer
    
            Suchmuster = "(?<=class=""title""\s*>\s*<\s*\w\d\s*>)[a-zA-Z0-9 ]+"
    
            ' Optionen: Groß-/Kleinschreibung ignorieren, Mehrzeiliger Text
            rgx = New Regex(Suchmuster, RegexOptions.IgnoreCase _
                                Or RegexOptions.Multiline)
    
            Trefferliste = rgx.Matches(HTMLQuelltext)           ' Alle Treffer ermitteln
    
            If Trefferliste.Count = 0 Then                      ' Trefferliste enthält keine Treffer
                MessageBox.Show("nix gefunden", "Hinweis")
            ElseIf Trefferliste.Count = 1 Then                  ' Trefferliste enthält genau 1 Treffer
                Treffer = Trefferliste.Item(0).ToString.Trim    ' Spaces am Anfang und Ende entfernen
                MessageBox.Show(Treffer, "Tag gefunden")
            Else                                                ' Trefferliste enthält mehr als 1 Treffer
                MessageBox.Show("Mehr als 1 Tag gefunden", "Hinweis")
            End If
    
        End Sub
    
        ' ********************************************************************************
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                Handles MyBase.Load
    
            SeiteGeladen = False
            Try
                WebBrowser1.Navigate(WEBADRESSE)                ' Seite aus den Internet laden
            Catch ex As Exception
                MessageBox.Show("Fehler beim Laden")
            End Try
    
            Do Until SeiteGeladen = True                        ' Warten bis vollständig geladen
                System.Windows.Forms.Application.DoEvents()
            Loop
    
            'WebBrowser1.Visible = False
    
        End Sub
    
        ' ********************************************************************************
    
        Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, _
                                ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _
                                Handles WebBrowser1.DocumentCompleted
    
            HTMLQuelltext = WebBrowser1.DocumentText            ' Quellcode in Variable speichern
            SeiteGeladen = True
            MessageBox.Show(HTMLQuelltext.Length.ToString)      ' Nur für Testzwecke (Länge des Quelltextes)
    
        End Sub
    End Class
    

     

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 10-18-2008 22:17 Antwort zu

    • socke
    • Top 10 Mitwirkender
    • Registriert am 04-16-2007
    • VB.Net: Visual Studio 2008 EE
    • Beiträge 373

    AW: Auslesen von Internet Quelltextinformationen

    Mein Beispiel war eigentlich ganz unabhängig von der Umsetzung im Code allgemein über Html, weil Markus gesagt hat, er kenne sich nicht so aus mit Html.

    Aber du hast natürlich Recht, dass RegEx viel flexibler ist als eine starre String-Suche.

     

    Wenn aus einem Raum mit sieben Leuten acht rausgehen, dann muss einer zurückkommen, damit keiner mehr drin ist.
    • IP-Adresse ist Registriert
  • 10-19-2008 13:23 Antwort zu

    AW: Auslesen von Internet Quelltextinformationen

     WOW KLASSE ...

    Danke Peter_Punkt und auch socke ich mjuss sagen ..... ja ich kann nichts sagen ich bin begeistert DANKE!!!

    Peter sag mal wie lange hat das gedauert? Und wann hast du dazu immer Zeit? Naje egal DANKE ihr zwei!!!

     

    mfg Markus

    "Ich weiß, dass ich nichts weiß!" - Sokrates
    • IP-Adresse ist Registriert
  • 10-20-2008 9:57 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2005/2008/2010, VB.NET, Office 2002, VB6, Win 7
    • Beiträge 1.968

    AW: Auslesen von Internet Quelltextinformationen

    Mein Aufwand für die Analyse, Erstellung und Tests des Code-Beispiels war ungefähr 2 Std.

    Frage mich auch manchesmal, wie ich das zeitlich hinbekomme, aber meist geht es Vormittags und am späteren Abend.

    Noch ein Hinweis: Den Titel des Videos findet man auch in der blauen Fensterleiste (ganz oben), der im Quellecode durch die Tags <title> Text für Fensterleiste</title>. Socke hatte ja schon auf diesen Punkt hingewiesen.

    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    • IP-Adresse ist Registriert
  • 02-08-2010 21:32 Antwort zu

    • NscMike
    • Top 500 Mitwirkender
    • Registriert am 02-08-2010
    • Beiträge 9

    AW: Auslesen von Internet Quelltextinformationen

    Alle Ehre Peter der Code hat dir bestimmt viel Arbeit gekostet.

    Hab ihn mir schon angeschaut weil ich auch gerne was aus einer Webseite in ein Label laden würde.

    Jedoch weiß ich nicht genau wie ich das machen soll :-(

    Könntest du mir vll helfen? bitte bitte

    Hier ein Ausschnitt aus dem Quellcode der Webseite

                  <div id="MainContent">
                    <div id="Content_Show">

                        <div style="width:90px; float:left; margin-top:11px"></div>

                        <div style="width:345px;float:left; margin-top:11px; overflow:hidden">
     
                        Empyre One - Moonlight Shadow               </div>
     
                        <div style="width:40px;float:left; margin-top:11px; overflow:hidden"><a href="/tracklist.php"><span style="color:#DFB649"><strong>Tracks</strong></span></a></div>
                    </div>
                    <div>

    Ich würde Gerne den Titel des aktuellen Songs der gerade im Radio Läuft auslesen und in ein Label laden.

    In diesem Fall heißt das Lied "Empyre One - Moonlight shadow"

    Ich weiß leider nicht wie ich deinen Code umschreiben muss, könntest du mir vll helfen?

    Hier mal der Link zur Webseite aus dem der Quellcode stammt.

    http://www.technobase.fm/

    • IP-Adresse ist Registriert
  • 02-09-2010 11:32 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS 2005/2008/2010, VB.NET, Office 2002, VB6, Win 7
    • Beiträge 1.968

    AW: Auslesen von Internet Quelltextinformationen

    So geht's:

    Nachdem pro Webseite jede id=... nur einmal vorkommen darf, kann man diese Position bei dieser Website quasi als Orientierungspunkt/Anker verwenden und in die RegEx aufnehmen (mal googgeln nach   RegEx LookBehind)

    Dann muß man die RegEx so formulieren, daß man die ersten beiden <div sytyle=... bekommt. Anschließend schneidet man das letzte </div> ab und nimmt alles was hinter dem letzten verbleibenden > steht.

     

    Code-Beispiel (getestet):

    ' Projekt:  HTML-Tags suchen und Infos auslesen (Website: Technobase.fm)
    ' Autor:    Peter Punkt
    ' Version:  02 - 09.02.2010
    ' Problem:  http://www.vb-magazin.de/forums/forums/p/4745/21888.aspx
    
    Option Explicit On
    Option Strict On
    
    Imports System.Text.RegularExpressions
    
    Public Class Form1
    
        Const WEBADRESSE As String = "http://www.technobase.fm"   ' "C:\$PP\$HTML\technobase.fm.html"    ' <--- ANPASSEN
    
        Dim rgx As Regex
        Dim HTMLQuelltext As String
        Dim SeiteGeladen As Boolean
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                Handles btn_Start.Click
    
            Dim Suchmuster As String
            Dim Trefferliste As MatchCollection
            Dim Treffer As String
            Dim Pos As Integer
    
            SeiteNeuLaden()
    
            ' Bestandteile des Suchmusters:
            '   (?<=    )         Wenn Kombination gefunden, dann LookBack/Zurückschauen (?<=   ), ob ...
            '   id=""Content_Show"">   ... id="Content_Show" am Anfang steht ...
            '   \s*               ... gefolgt von keinem oder mehreren Spaces bis was anders kommt ...
            '   <div style=       ... gefolgt von <div style= ...
            '   .+>               ... gefolgt von einem oder mehreren beliebigen Zeichen bis > kommt ...
            '   [^<]*             ... gefolgt von keinem oder mehreren belibigen Zeichen (außer <) bis </div> kommt ...
            '   {2}               ... insgesamt 2-mal muß der Suchstring in (....) passen
            ' Wenn alle diese Überprüfungen erfüllt sind, dann ist die Kombination ein gültiger Treffer
    
            Suchmuster = "(?<=id=""Content_Show"">)(\s*<div style=.+>\s*[^<]*</div>){2}"
    
            ' Optionen: Groß-/Kleinschreibung ignorieren, Mehrzeiliger Text
            rgx = New Regex(Suchmuster, RegexOptions.IgnoreCase _
                                Or RegexOptions.Multiline)
    
            Trefferliste = rgx.Matches(HTMLQuelltext)           ' Alle Treffer ermitteln
    
            If Trefferliste.Count = 0 Then                      ' Trefferliste enthält keine Treffer
                MessageBox.Show("nix gefunden", "Hinweis")
    
            ElseIf Trefferliste.Count = 1 Then                  ' Trefferliste enthält genau 1 Treffer
                Treffer = Trefferliste.Item(0).ToString.Trim    ' Spaces am Anfang und Ende entfernen
    
                Pos = Treffer.LastIndexOf("</div>")
                Treffer = Treffer.Remove(Pos)                   ' Letztes </div> entfernen
    
                Pos = Treffer.LastIndexOf(">") + 1
                Treffer = Treffer.Substring(Pos).Trim           ' Alles ab dem letzten > nehmen
                MessageBox.Show("***" & Treffer & "***", "Tag gefunden")
    
            Else                                                ' Trefferliste enthält mehr als 1 Treffer
                MessageBox.Show("Mehr als 1 Tag gefunden", "Hinweis")
    
            End If
    
        End Sub
    
        ' ********************************************************************************
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                Handles MyBase.Load
    
            'WebBrowser1.Visible = False
    
            SeiteNeuLaden()
    
        End Sub
    
        ' ********************************************************************************
    Private Sub SeiteNeuLaden() SeiteGeladen = False Try WebBrowser1.Navigate(WEBADRESSE) ' Seite aus den Internet laden Catch ex As Exception MessageBox.Show("Fehler beim Laden") End Try Do Until SeiteGeladen = True ' Warten bis vollständig geladen System.Windows.Forms.Application.DoEvents() Loop End Sub ' ******************************************************************************** Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, _ ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _ Handles WebBrowser1.DocumentCompleted HTMLQuelltext = WebBrowser1.DocumentText ' Quellcode in Variable speichern SeiteGeladen = True 'MessageBox.Show(HTMLQuelltext.Length.ToString) ' Nur für Testzwecke (Länge des Quelltextes) End Sub End Class
    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    Abgelegt unter: ,
    • IP-Adresse ist Registriert
Seite 1 von 2 (25 Treffer) 1 2 > Weiter
Alle Rechte vorbehalten. Zum Impressum