Seite 1 von 1
Wie kann ich ein Bild auf einer Webseite Finden
Verfasst: 28.07.2007 20:52
von Aspirant
Hallo,
Ich möchte ein Bild in einem Webgadget finden wie stelle ich das ambesten an?
des Weiteren wie kann ich sicher Stellen das die Seite wirklich alles geladen ist?
Code: Alles auswählen
Procedure warten()
IsBusy = 65000
; get webgadgets IWebBrowser2 interface: (ruft die Funktion auf und bestimmt die Gadget ID))
Browser.IWebBrowser2 = GetWindowLong_(GadgetID(0), #GWL_USERDATA)
;Warten bis Seite Geladen ist
Repeat
Debug IsBusy
While WindowEvent(): Wend
Delay(1)
Browser\get_Busy(@IsBusy.l)
Until IsBusy = 0
Debug "loaded"
;Delay(20000)
EndProcedure
Der Code meldet ein fertig bevor die Seite Wirklich steht leider. Ich denke Mein Problem sind die darin enthaltenden javaskripte.
Verfasst: 29.07.2007 13:04
von uweb
Wenn es an den darin enthaltenden Javaskripten liegt ist das kein PureBasic-Problem. Es wäre auch von Hand nicht einfach. Das Beste wäre es wohl in beiden Fällen die Lösung per Javascript zu suchen. Nach meinem Kenntnisstand zeigen die Browser nur Dinge die im Document (DOM - Document Object Model - Firefox - Extras - DOM Inspector ) enthalten sind. Per Javascript lassen sich solche Objekte erzeugen und/oder verändern aber eben auch abfragen.
Hier gibt es Beispiele :
http://www.galileocomputing.de/openbook ... om_003.htm
Bei den Fragen "Wie binde ich nun mein Abfrage-Javascript in die fremde Seite ein ?" und "Wie kommuniziere ich mit meinem Abfrage-Javascript ?" bin ich so auf die Schnelle tatsächlich unbewaffnet. Für beides gibt es aber, wenn ich mich recht erinnere, hier oder im englischen Forum schon Lösungen.
Verfasst: 29.07.2007 23:55
von Aspirant
@uweb
Hallo ich glaube ich habe mich Dumm ausgedrückt!
Ich will wissen wie ich es hin bekomme mit dem nästen Programmschritt nach dem Aufruf den Webgadget so lange zuwarten bis die Seite Komplett verarbeitet ist.
und dann möchte ich die Position einen Bildes ermitteln.
ich möchte in die Javaskripte eingreifen ich habe nur keine Möglichkeit gefunden zu erkennen wann sie fertig sind
Verfasst: 29.07.2007 23:56
von Kaeru Gaman
> ich möchte in die Javaskripte eingreifen
dann sag das doch bitte gleich.
...das ist alles andere als ein "anfänger"-task...

Verfasst: 30.07.2007 02:13
von Aspirant
Aspirant hat geschrieben:@uweb
Hallo ich glaube ich habe mich Dumm ausgedrückt!
Ich will wissen wie ich es hin bekomme mit dem nästen Programmschritt nach dem Aufruf den Webgadget so lange zuwarten bis die Seite Komplett verarbeitet ist.
und dann möchte ich die Position einen Bildes ermitteln.
ich möchte in die Javaskripte eingreifen ich habe nur keine Möglichkeit gefunden zu erkennen wann sie fertig sind
Habe mist gebaut!!
ich möchte
NICHT in die Javaskripte eingreifen ich habe nur keine Möglichkeit gefunden zu erkennen wann sie fertig sind sprich wann die Seite wirklich komplett steht.
ich hoffe das ist jetzt Deutlicher ist was ich möchte.
Verfasst: 30.07.2007 07:45
von uweb
Mir fällt aber keine andere Lösung ein. Wenn Du Dich doch noch damit anfreunden kannst, kommt hier der Teil zum überprüfen ob alle Bilder geladen wurden - von dem ich dachte den wirst Du leicht selber finden :
Code: Alles auswählen
function onComplete() {
n = 0;
l = document.images.length;
for(i=0; i < l; i++) if(document.images[i].complete == true) n++;
if(n < l) setTimeout("onComplete()",100); else myScript();
}
Verfasst: 30.07.2007 10:19
von Kiffi
@Aspirant:
Lade Dir mal den
PureDispHelper von Thomas herunter und installiere ihn.
Danach kannst Du mal den folgenden Code ausprobieren:
Code: Alles auswählen
; GetImagesFromWebpage
EnableExplicit
Define.l oIE, oDoc, oImage, result
Define.l AnzahlBilder.l, Counter.l
Define.l ImageURL.l
dhToggleExceptions(#True)
oIE = dhCreateObject("InternetExplorer.Application")
If oIE
dhPutValue (oIE, ".Visible = %b", #False)
dhCallMethod(oIE, ".Navigate(%T)", @"www.google.de")
Repeat
dhGetValue("%d", @result, oIE, ".ReadyState")
Until result = 4
dhGetValue("%o", @oDoc, oIE, ".Document")
If oDoc
dhGetValue("%d", @AnzahlBilder, oDoc, ".Images.Length")
Debug Str(AnzahlBilder) + " Bild(er) vorhanden"
If AnzahlBilder
For Counter = 0 To AnzahlBilder - 1
dhGetValue("%o", @oImage, oDoc, ".Images(%d)", Counter)
If oImage
dhGetValue("%T", @ImageURL, oImage, ".src")
If ImageURL
Debug "Image " + Str(Counter + 1) + ": " + PeekS(ImageURL)
dhFreeString(ImageURL)
EndIf
dhReleaseObject(oImage)
EndIf
Next
EndIf
dhReleaseObject(oDoc)
EndIf
dhReleaseObject(oIE)
EndIf
Grüße ... Kiffi
Verfasst: 31.07.2007 01:13
von Aspirant
@Kiffi
Danke dein Code funktioniert TOP!!!
jetzt kann ich mein Bild finde wie ich es wollte.
@uweb
Auch dir danke dein Code habe ich nicht verbaut mache ich heute Nacht.
nun habe ich noch ein Problem auf der Webseite wird ein Bild mit einen Javaskript erzeugt das findet dein Skript nicht kiffi kann mann da auch noch was machen?
MFG Aspirant
Verfasst: 31.07.2007 09:21
von Kiffi
Aspirant hat geschrieben:nun habe ich noch ein Problem auf der Webseite wird ein Bild mit einen
Javaskript erzeugt das findet dein Skript nicht
kannst Du einen Link zu dieser Webseite posten? Mal schauen, was sich
da machen lässt.
Grüße ... Kiffi