DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

How can i get the content of a web page?

Hello,
 
I need the content (HTML-Code) of a web page in DIAdem. But who can i do this in an VBS-Script.
 
I found an example for VisualBasic --> http://www.activevb.de/tipps/vb6tipps/tipp0022.html . This doesnot work with some changes in DIAdem.
 
You can also answer in german.
 
Who as an idea?
 
Thanks
 
0 Kudos
Message 1 of 17
(6,757 Views)
Hallo Uwe!
 
Ich hab das mal so gemacht:
Option Explicit  'Erzwingt die explizite Deklaration aller Variablen in einem Skript.
 
Dim oIE
 
' Get IE object
Set oIE = CreateObject("InternetExplorer.Application")
 
' Load Page
oIE.Navigate("http:\\www.measx.com")
 
' wait until page is loaded
While oIE.Busy 
Wend
 
MsgBox oIE.Document.documentElement.outerHTML
Matthias
Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater?  
0 Kudos
Message 2 of 17
(6,752 Views)

Hallo Michael,

vielen Dank für die schnelle Lösung. Funktioniert Super.

Viele Grüsse

   Uwe

0 Kudos
Message 3 of 17
(6,748 Views)

Sorry,

ich meinte nartürlich Mathias!!!

Uwe

0 Kudos
Message 4 of 17
(6,746 Views)
oder Matthias Smiley Very Happy
 
Es ist übrigens eine nette Sache hilfreiche Antworten zu bewerten Smiley Wink
 
Ein schönes Wochenende
 
Matthias
Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater?  
0 Kudos
Message 5 of 17
(6,742 Views)
Hallo Matthias,
 
ich habe gerade angefangen deinen Vorschlag in meine Applikation einzubauen. Zu deiner Lösung hätte ich noch drei Fragen:
    1. Wo finde ich Informationen, welche Fubktionen das oIE-Objekt hat?
    2. Kann der Inhalt der Web-Seite auch direkt in eine TextDatei geladen werden?
    3. Kann während des Downloads ein Fortschritts- oder Aktivitätsanzeige erfolgen?

Vielen Dank

    Uwe

0 Kudos
Message 6 of 17
(6,468 Views)

Hallo Uwe!

Zu 1.: Will man Infos finden ist es das einfachste den Befehl TypeName auf ein Objekt anzuwenden und das Ergebnis in einer Messagebox auszugegeben. Für das oIE Objekt bekommst du dann 'IWebBrowser2'. Im Internet findet man dazu bei Microsoft ('http://msdn2.microsoft.com/en-us/library/aa752127(VS.85).aspx') dann die Beschreibung. Das Objektmodell vom IE ist aber recht komplex so das etwas dauert bis man dann den Gesamtausdruck zusammen hat.

Zu 2.+3.: Hier der erweiterte Code:

Option Explicit
 
Dim oIE
Dim sgHTML
Dim nProgress
 
' Get IE object
Set oIE = CreateObject("InternetExplorer.Application")
 
Call LoopInit()
Call MsgLineDisp("Load document 'http:\\www.measx.com'")
 
' Load Page
oIE.Navigate("http:\\www.measx.com")
 
' wait until page is loaded and show progress
While oIE.Busy
  Call LoopInc(nProgress mod 100)
 
  nProgress = nProgress + 1
Wend
 
' Get HTML
sgHTML = oIE.Document.documentElement.outerHTML
 
' Save to file
Call CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\Measx.htm",true,true).Write(sgHTML)

Die Verlaufsanzeige ist rechts/unten in DIAdem. Da nicht klar ist wie lange das Laden dauert wird immer wieder bei 0 begonnen. Ich hab das HTML erstmal in einen String gespeichert und dann erst in eine Datei geschreiben. Das kann man auch alles in eine Zeile packen, finde ich aber nicht gut lesbar.

Matthias

Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater?  
0 Kudos
Message 7 of 17
(6,464 Views)

Hallo Matthias,

vielen Dank für die schnelle Hilfe, Es funktioniert fast alles,

Der einzige kleine Schönheitsfehler besteht darin das die Fortschrittsanzeige nicht gleichmäßig während des Downloads angezeigt wird. Manchmal wird sie garnicht aktualisiert, manchmal läuft sie einige male hin und her und hin und wieder wird sie auch garnicht angezeigt.

  Uwe

0 Kudos
Message 8 of 17
(6,451 Views)
Hallo Uwe!
 
Ja, so richtig schön ist das nicht, weshalb ich auch mal den DIAdem befehl Pause eingebaut hatte. Der zerstört dann aber leider den Text in der Statuszeile. Wenn du es trozdem mal probieren willst setze den Befehl in die while-Schleife mit einem Wert von 0.1. nProgress kannst du dann je Durchlauf um 10 erhöhen. Alternativ kann man auch nur das Inkrement verringern auf einen Wert von 0.1-0.2. Das ist dann aber sicher abhängig vom Rechner.
 
Matthias
Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater?  
0 Kudos
Message 9 of 17
(6,447 Views)

Hallo Uwe,

zu 3 habe ich noch eine Alternative:

' Meldungsbox ohne Button einblenden vor Wartezeit
call MsgBoxDisp("Hinweistext" & vbCrLf & "Bitte warten...","MB_NOBUTTON","MsgTypeNote",,,"YES")

... ' Befehle usw...

' Meldungsbox wieder ausblenden
call MsgBoxCancel

 

greets Andreas

Volkswagen AG
Wolfsburg - Germany
Message 10 of 17
(6,438 Views)