Wie kann ich ein Bild auf einer Webseite Finden

Anfängerfragen zum Programmieren mit PureBasic.
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Wie kann ich ein Bild auf einer Webseite Finden

Beitrag 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.
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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.
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag 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
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag 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.
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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();
}
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag 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
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Antworten