Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Bild-URL aus Frame auslesen (https://www.delphipraxis.net/161838-bild-url-aus-frame-auslesen.html)

Jacques Murell 23. Jul 2011 17:42

Bild-URL aus Frame auslesen
 
Moin,

via
Delphi-Quellcode:
ImageURL := Webbrowser.OleObject.Document.Images.Item(1).Src;
Lese ich die URL des ersten bzw. zweiten Bildes auf einer Webseite aus. Soweit kein Problem.

Nun müsste ich aber leider die URL des ersten Bildes welches in einem iFrame auf dieser Seite liegt herausfinden. Ich habe mir schon nen Wolf gesucht aber irgendwie weiß ich nicht wie ich das Bild in diesem Frame ansteuern bzw. die URL herausfinden soll.

Kann jemand helfen?

himitsu 23. Jul 2011 17:50

AW: Bild-URL aus Frame auslesen
 
Erstmal auf den Frame zugreifen und dort dann auf's Bild?

Gibt doch bestimmt sowas wie
Delphi-Quellcode:
Webbrowser.OleObject.Document.Frames
oder
Delphi-Quellcode:
Webbrowser.OleObject.Frames
?
Also dann quasi
Delphi-Quellcode:
Webbrowser.OleObject.Document.Frames(i).{Document.}Images.Item(1).Src
:gruebel:

blackfin 23. Jul 2011 17:55

AW: Bild-URL aus Frame auslesen
 
Geht sicher einfacher, aber ich würde das wohl so angehen:
Den Quelltext des iFrame (Inhalt) holen und über ein RegEx-Suchmuster, das nach <img>-Tags sucht, durchparsen und aus den gefundenen Ergebnissen den value von "src" auslesen.
In Perl-Regex-Syntax wäre das ungefähr folgendes Pattern für den ersten Lauf (ohne Gewähr..):
Code:
/<img[^>]+>/i
und für den zweiten Lauf für die extrahierten <img>-Tags:
Code:
/(src)=("[^"]*")/i

Jacques Murell 23. Jul 2011 18:06

AW: Bild-URL aus Frame auslesen
 
Zitat:

Zitat von himitsu (Beitrag 1113173)
Erstmal auf den Frame zugreifen und dort dann auf's Bild?

Gibt doch bestimmt sowas wie
Delphi-Quellcode:
Webbrowser.OleObject.Document.Frames
oder
Delphi-Quellcode:
Webbrowser.OleObject.Frames
?
Also dann quasi
Delphi-Quellcode:
Webbrowser.OleObject.Document.Frames(i).{Document.}Images.Item(1).Src
:gruebel:

Ja so hatte ich das auch versucht aber keinen Erfolg. Da fehlt leider ne ordentliche Dokumentation dieser Komponente. :-(

Edit: So muss es lauten:
Delphi-Quellcode:
sImageURL := Webbrowser.OleObject.Document.Frames.item(0).Document.Images.Item(0).Src;

himitsu 23. Jul 2011 18:43

AW: Bild-URL aus Frame auslesen
 
@blackfin: Der Quellcode eines IFrames ist nicht in die Seite eingebettet, also selbst wenn er den Quellcode der webseite ausließt, kommt man so garantiert nicht an die Bilder eines Frames.
Also wenn schon, dann zuerst den Frame suchen, diesen runterladen und dann darin suchen.

Aber wie er ohne RegEx an die Bilder einer HTML-Datei rankommtn, hat er ja schon ... nur den Frame muß man erstmal finden. :zwinker:

blackfin 23. Jul 2011 19:33

AW: Bild-URL aus Frame auslesen
 
Zitat:

Der Quellcode eines IFrames ist nicht in die Seite eingebettet.
Hab ich das gesagt? :stupid::oops:
Zitat:

Also wenn schon, dann zuerst den Frame suchen, diesen runterladen und dann darin suchen.
Das hab ich doch geschrieben...:
Zitat:

Zitat von blackfin
Den Quelltext des iFrame (Inhalt) holen

Er soll sich den Inhalt des iFrame holen...und ein eigener Browser kommt da doch ran. (Muss es ja auch irgendwie rendern :-)

Thom 23. Jul 2011 20:03

AW: Bild-URL aus Frame auslesen
 
Liste der Anhänge anzeigen (Anzahl: 3)
Enthält das IFrame nur das Bild? Also so etwas:
Code:
<html>
  <head>
    <title></title>
  </head>
  <body>
    <iframe src="http://www.google.de/images/nav_logo82.png">
    </iframe>
  </body>
</html>
Falls ja, würde ich alle Elemente in Document.All durchsuchen, bis ein IFrame-Objekt auftaucht (NodeName=IFRAME) und von dem die Src-Eigenschaft auslesen:
Anhang 34760

Das Bild ist dann nämlich offenbar weder in Document.Images enthalten
Anhang 34758
noch über Documents.Frames[...] ermittelbar:
Anhang 34759


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz