Harry.F: Webseiten Inhalt auslesen

Hallo,

ich benötige für ein Projekt eine Javascript 'Funktion', mit der ich definierten Inhalt (also von... bis...) einer Webseite auslesen/parsen kann.
Ich möchte das mit Windows Boardmitteln (WSH) z.B. Aufruf mit: WScript.exe openurl.js) realisieren?

Beispiel für Funktionsaufrufe:
vt = OpenUrl(http://domain.de);
vt = stringTeil(vt, "Anfang", "Ende");

Im Web habe ich eine Lösung für VisualBasic gefunden (siehe OpenURL.bas)
Gibt es ein Pendant zu Javascript JS oder kann man sowas in JS übersetzen?

Gruss Harry F

Inhalt OpenURL.bas

Attribute VB_Name = "OpenUrl"
    'API-Deklarationen:
Private Declare Sub InternetCloseHandle Lib "wininet.dll" ( _
    ByVal hInet As Long)
Private Declare Function InternetOpenA Lib "wininet.dll" ( _
    ByVal sAgent As String, ByVal lAccessType As Long, _
    ByVal sProxyName As String, ByVal sProxyBypass As String, _
    ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrlA Lib "wininet.dll" ( _
    ByVal hOpen As Long, ByVal sUrl As String, _
    ByVal sHeaders As String, ByVal lLength As Long, _
    ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Sub InternetReadFile Lib "wininet.dll" ( _
    ByVal hFile As Long, ByVal sBuffer As String, _
    ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long)

'Enumeration für Internet:
Public Enum InternetOpenType
  IOTPreconfig = 0
  IOTDirect = 1
  IOTProxy = 3
End Enum

Public Function OpenURL( _
    ByVal URL As String, _
    Optional ByVal OpenType As InternetOpenType = IOTPreconfig _
  ) As String
  Const INET_RELOAD = &H80000000
  Dim hInet As Long
  Dim hURL As Long
  Dim Buffer As String * 2048
  Dim Bytes As Long

'Inet-Connection öffnen:
  hInet = InternetOpenA( _
      "VB-Tec:INET", OpenType, _
      vbNullString, vbNullString, 0)
  hURL = InternetOpenUrlA( _
      hInet, URL, vbNullString, 0, INET_RELOAD, 0)

'Daten sammeln:
  x = 0
  Do
    InternetReadFile hURL, Buffer, Len(Buffer), Bytes
    If Bytes = 0 Then Exit Do
    OpenURL = OpenURL & Left$(Buffer, Bytes)
  Loop

'Inet-Connection schließen:
  InternetCloseHandle hURL
  InternetCloseHandle hInet
End Function

Function stringTeil(Text As String, anfangStr As String, endStr As String)
Dim anfang As Long, ende As Long, anfangEnde As Long
    If anfangStr = "" Then
        anfang = 1
    Else
        anfang = InStr(1, Text, anfangStr, vbTextCompare)
    End If

anfangEnde = anfang + Len(anfangStr)

If endStr = "" Then
        ende = Len(Text) + 1
    Else
        ende = InStr(1, Text, endStr, vbTextCompare)
    End If

If anfang > 0 And ende > 0 Then
        stringTeil = Mid(Text, anfangEnde, ende - anfangEnde)
    Else
        stringTeil = NA
    End If
End Function
'==================

  1. Hallo,

    ich benötige für ein Projekt eine Javascript 'Funktion', mit der ich definierten Inhalt (also von... bis...) einer Webseite auslesen/parsen kann.

    Mit AJAX kannst du eine Webseite ***derselben Domain*** aufrufen und auswerten. Aber eben nicht eine beliebige Webseite.

    Der Aufruf einer fremden Domain ergibt einen Fehler. Und das ist so gewollt wg. Sicherheit.

    Kalle

    1. Hallo,

      Mit AJAX kannst du eine Webseite ***derselben Domain*** aufrufen und auswerten. Aber eben nicht eine beliebige Webseite.
      Der Aufruf einer fremden Domain ergibt einen Fehler. Und das ist so gewollt wg. Sicherheit.

      ...nun, es gibt sicherlich eine ganze Menge Sprachen mit denen es nicht geht, aber wirklich hilfreich sind solche Antworten für mich natürlich nicht.

      Harry

      1. Hi,

        ...nun, es gibt sicherlich eine ganze Menge Sprachen mit denen es nicht geht, aber wirklich hilfreich sind solche Antworten für mich natürlich nicht.

        Diese Antwort besagt exakt, dass Javascript keine Lösung für Dich bietet. Und Ajax ist keine Sprache.

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. Hallo,

          Diese Antwort besagt exakt, dass Javascript keine Lösung für Dich bietet. Und Ajax ist keine Sprache ...

          ... sondern eine Kommunikationstechnik, die mit Javascript auf der einen Seite realisiert wird. (Das nur der Vollständigkeit halber)

          Ciao,
           Martin

          --
          Wenn der Computer wirklich alles kann,
          dann kann er mich mal kreuzweise.
          1. Hallo,

            Diese Antwort besagt exakt, dass Javascript keine Lösung für Dich bietet. Und Ajax ist keine Sprache ...

            ... sondern eine Kommunikationstechnik, die mit Javascript auf der einen Seite realisiert wird. (Das nur der Vollständigkeit halber)

            Genau! Harry könnte ja den Content serverseitig fix und fertig zusammenbauen und alles wird gut ;-)

            Hotti

            1. Hallo,

              ich hatte eigentlich auf konstruktive Vorschläge zur Lösung gehofft - vor allem aber nicht auf Antworten von Erbsenzählern und Senfdazugebern. Diese Art des "Chattens" kenne ich zu Genüge aus anderen Foren.

              Mit gebührendem Respekt bitte ich von dieser arrogannten Art und Weise der Beiträge Abstand zu nehmen. Sie helfen in keinster Weise sich einer Herausforderung zu stellen und diese zu lösen.

              Gruss
              Harry F

              1. Seid gegrüßt!

                ich sehe hier schon eine Hilfe: Nämlich die, dass es mittels Javascript nicht funktionieren wird. Andere Sprachen können dir bei deinem Vorhaben sicher helfen, nicht aber Javascript (zumindest so weit ich meine Vorschreiber verstanden habe.) Ich habe selbst einmal so etwas realisiert, allerdings in PHP und nicht in Javascript.

                Javascript unterliegt der same origin policy.

                Des weiteren möchte ich hinzufügen, dass ich keinerlei Arroganz o.ä. in den Vorpostings erkennen kann. Es wurde lediglich darauf hingewiesen, dass dein Vorhaben -wie du es möchtest / ich bzw. meine Vorschreiber es verstanden haben- nicht möglich ist.

                Ist ein Posting in diesem Forum nicht schon von Natur aus ein "Senfdazugeben" ?

                Sie helfen in keinster Weise sich einer Herausforderung zu stellen und diese zu lösen.

                Dem möchte ich widersprechen: Du weist bereits jetzt, dass es so nicht möglich ist.

                --
                Bis Später
                RuD
                ________________________________________________________________
                Mein Weblog:
                http://blog.rudweb.de/
                1. Hallo Rud,
                  vielen Dank erstmal für den ersten klar verständlichen Beitrag.

                  ich sehe hier schon eine Hilfe: Nämlich die, dass es mittels Javascript nicht funktionieren wird. Andere Sprachen können dir bei deinem Vorhaben sicher helfen, nicht aber Javascript (zumindest so weit ich meine Vorschreiber verstanden habe.) Ich habe selbst einmal so etwas realisiert, allerdings in PHP und nicht in Javascript.

                  »»
                  Das nenne ich eine klare (unverschlüsselte) Antwort.

                  Javascript unterliegt der same origin policy.

                  »»
                  Vielen Dank auch dafür.

                  Es wurde lediglich darauf hingewiesen, dass dein Vorhaben -wie du es möchtest / ich bzw. meine Vorschreiber es verstanden haben- nicht möglich ist.

                  »»
                  Das kann man doch auch genauso unmissverständlich ausdrücken.

                  Ist ein Posting in diesem Forum nicht schon von Natur aus ein "Senfdazugeben" ?

                  ...ohne Kommentar.

                  Dem möchte ich widersprechen: Du weist bereits jetzt, dass es so nicht möglich ist.

                  »»
                  Na ja, man kann das Pferd auch von hinten aufzäumen und erst mal alles aufzählen was nicht geht - in meinen Augen nicht sooo effektiv.

                  ...werde mich jetzt mit wget und curl auseinandersetzen um über einen Umweg ans Ziel zu kommen. Das Forum hier bringt mich dem Ziel nicht weiter. Vor einiger Zeit wurde mir hier weis gemacht, dass mit JS ein read/write von ini-Dateien nicht möglich ist - tja, weit gefehlt, Lösung wurde erarbeitet.

                  Gruss Harry F

                  Thema geschlossen

                  1. Hallo,

                    ich sehe hier schon eine Hilfe: Nämlich die, dass es mittels Javascript nicht funktionieren wird. Andere Sprachen [...]
                    Das nenne ich eine klare (unverschlüsselte) Antwort.

                    aber genau diese Antwort hattest du im ersten Follow-Up von Kalle schon bekommen.

                    Javascript unterliegt der same origin policy.
                    Vielen Dank auch dafür.

                    Oh. Das hätte ich als bekannt vorausgesetzt.

                    Es wurde lediglich darauf hingewiesen, dass dein Vorhaben -wie du es möchtest / ich bzw. meine Vorschreiber es verstanden haben- nicht möglich ist.
                    Das kann man doch auch genauso unmissverständlich ausdrücken.

                    Was war an Kalles Antwort unverständlich oder missverständlich? Er schrieb sogar noch, dass es möglich ist, solange die Daten von derselben Domain stammen [wie das Dokument selbst].

                    Na ja, man kann das Pferd auch von hinten aufzäumen und erst mal alles aufzählen was nicht geht - in meinen Augen nicht sooo effektiv.

                    Du fragtest nach einer Lösung in Javascript - und hast die Antwort bekommen: Das geht nicht.

                    ...werde mich jetzt mit wget und curl auseinandersetzen um über einen Umweg ans Ziel zu kommen. Das Forum hier bringt mich dem Ziel nicht weiter.

                    Nein, wenn du nicht willst, dann natürlich nicht.

                    Vor einiger Zeit wurde mir hier weis gemacht, dass mit JS ein read/write von ini-Dateien nicht möglich ist

                    Das behaupte ich auch immer noch.

                    tja, weit gefehlt, Lösung wurde erarbeitet.

                    Mag sein - aber nicht mit Javascript. Vielleicht mit Microsofts JScript oder anderen proprietären Erweiterungen, oder unter Zuhilfenahme einer weiteren Technik wie Flash oder Java.

                    Ciao,
                     Martin

                    --
                    Zwei Politiker auf dem Weg zum Sitzungssaal: "Was sagten Sie in ihrer Rede neulich noch zur Rentenreform?" - "Nichts." - "Ja, schon klar. Aber wie haben Sie es formuliert?"