Deutsch
Forum

HTML Quelltext

 

Georg
Hovenbitzer
Hallo zusammen,

wie man eine HTML Seite anzeigt ist mir dank diesem Forum bekannt

Aber wie bekomme ich den Quelltext dieser Seite, da ich darin nach einer bestimmten Zeichenkette suchen und diesen kopieren will

Mir fehlt vollkommen der Ansatz, hat jemand einen Tip ???
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
03.05.2006  
 



Dafür nimmst Du einfach die Download-Unit.
 
03.05.2006  
 



Macht das nicht Dein Browser ? - Mozilla Firefox zeigt den Quelltext der grade geladenen Seite an: Ansicht -> Seitenquelltext anzeigen -
 
04.05.2006  
 




Frank
Abbing
Beim IE versteckt sich die Funktion unter Ansicht/Quelltext.
Ich denke aber, Georg möchte das selber programmieren. Also mal iFs Vorschlag testen.
 
04.05.2006  
 




Georg
Hovenbitzer
Hallo zusammen,

ihr habt alle recht

Die Unit von iF macht eigentlich genau das was ich möchte, ABER sie scheitert an der Seite da man sich dort anmelden muss und die wohl über Sessions ID gemacht wird.
Also komme ich damit nicht weiter.

Es gibt nach meiner Meinung zwei Möglichkeiten:

1. wget oder curl soweit zu bekommen, dass sie sich einloggen und die Seite ziehen, diese dann auswerten.
Hier ist das Problem, dass ich die beiden Programme noch nicht dazu gebracht habe sich einzuloggen.

2. da ich mir die Seite in dem Moment ansehe wo ich die Daten aus dem Quelltext benötige, suche ich eine Möglichkeit im Hintergrund die Option des Browsers, den Quelltext zu zeigen, zu nutzen.
Man könnte das Browserfenster fernsteuern, was mir aber nicht so gut gefällt (Tastaturcodes senden, im Editfenster alles markieren, kopieren und auswerten)

Ich hoffe es versteht einer was ich da geschrieben habe und kann mir einen Tip geben.
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
04.05.2006  
 




Clemens
Meier
Es kommt auf das Login an. Du kannst dich mit der PCU von iF auch anmelden. Es kommt darauf an, ob du eine htaccess überwinden musst oder ob ein Formular benutzt wird. Und natürlich, dass du die Logindaten hast.

In beiden Fällen musst du die URL etwas ändern. Für einen htaccess müsste er wie folgt aussehen:
[...] 

Ist es ein Formular, musst du die Zugangsdaten an die URL dran hängen. Sähe dann so aus (ich glaube, die PCU von iF akzeptiert Querys):
[...] 

Mit der Session dürfte es auch kein Problem geben. Akzeptiert der Browser keine Cookies, wird die Sessionid bei jeder URL mit angehängt. So bekommst du sie also. Musst also in den Quelltext sehen, dir die Sessionid mit der entsprechenden Variablen rauspicken und diese dann jeweils an deine URLs dranhängen.
 
XProfan 9.1; XP SP2; FF; Editpad
05.05.2006  
 



Du kannst mit der Unit der Loginurl (php?) die Logindaten per get senden - und erhältst eine Seite welche warscheinlich auch die SessionID im Source haben wird. Eigendlich ist das was Du möchtest kein Problem, sei denn, die LoginPHP abverlangt die Logindaten ausschließlich per Post statt per Get.
 
05.05.2006  
 




Clemens
Meier
Im letzteren Falle könnte er die Prozedur aus dem Thread [...]  benutzen. Dann aber nicht den gleichen Fehler machen wie ich und vergessen die DLL einzubinden
 
XProfan 9.1; XP SP2; FF; Editpad
05.05.2006  
 




Uwe
''Pascal''
Niemeier
@ Georg: Wie bzw. wo lässt du die Seite anzeigen? Normaler Browser oder HTML-Control unter Profan?
In letzterem Fall: Wie erzeugst du es?

Möglicherweise gibt es eine COM-Lösung, oder man könnte die Datei im Cache ausfindig machen...

SeeYou
Pascal
 
05.05.2006  
 




Georg
Hovenbitzer
Hallo zusammen,

schon mal vielen Dank für die Hilfe Ich liebe dieses Forum

Ich probiere es zur Zeit über drei Möglichkeiten.

1. per alt.dll und einem AtlAxWin Control
- damit habe ich es geschaft die Seite darzustellen. Hierbei wird kein Login benötigt, da wohl das Cookie benutzt wird und er sich damit automatisch einloggt.

2. per PCU von iF
- hier geht es nun auch, was ebenso an dem Cookie liegt. Das zurück geben als String haut bei dieser Seite nicht hin, ich leite diesen an ein MultiEdit weiter und dabei verabschiedet sich das ganze (bei google.de klappt es mit der Anzeige). Abspeichern in einer Datei funktioniert.

3. Prozedur vom Clemens
- diese haut nicht ganz hin, da diese wohl immer nur den ersten Frame nimmt. So sieht mir, dass was angezeit wird, aus.

Es gibt also schon eine lösung worauf ich aufbauen kann.

Es würde mich aber immer interessieren ob man den IE anzapfen kann um sich von dort den Quelltext zu ziehen.
Dadurch bräuchte man die Seite nicht doppelt aufzurufen, da ich sie mir zu dem Zeitpunkt ja ansehe.

@Pascal
Nun geht es mit beiden, also IE und HTML Control.
Mit dem Cache hatte ich mir auch schon überlegt, da wenn man unter dem Browser sich den Quelltext ansieht, steht ja dort die Datei. Oder wird die in diesem Moment erst erstellt ? Mit COM kenne ich mich nicht aus, aber vielleicht hast du ja eine Idee.
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
05.05.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Georg!

Hier ein experimenteller Code, um aus einem ATL-WebContol den Quelltext zu ermitteln:
KompilierenMarkierenSeparieren
 $H Windows.ph
--------------------------------------------------------------------------------------------

proc StringToGUID---------------Umwandlung String > globally unique identifier

    parameters GUID$,GUID&
    declare Temp$
    Temp$=space$(80)
    ~MultiByteToWideChar(1,1,addr(GUID$),-1,addr(Temp$),80)
    external("ole32","CLSIDFromString",addr(Temp$),GUID&)
    endproc-----------------------------------------------------------------------

    proc CallMethod--------------------------Methode eines COM-Interfaces aufrufen

        parameters IFace&,Method&
        declare VTable&
        VTable&=long(IFace&,0)
        Method&=long(VTable&,Method&*4)
        case %pcount=2:return call( Method&,IFace& )
        case %pcount=3:return call( Method&,IFace&,&(3) )
        case %pcount=4:return call( Method&,IFace&,&(3),$(4) )
        case %pcount=5:return call( Method&,IFace&,&(3),&(4),&(5) )
        endproc-----------------------------------------------------------------------

        proc Quelltext_Lesen----------------------------Quelltext_Lesen---------------

            parameters WebCtrl&
            declare IID#,Error&
            dim IID#,16
            external("ole32","CoInitialize",0)
            print "ATL-WebControl",WebCtrl&
            print
            declare IUnknown&
            Error&=external("atl","AtlAxGetControl",WebCtrl&,addr(IUnknown&))
            print "Error AtlAxGetControl",Error&
            print "IUnknown",IUnknown&
            print
            declare IWebBrowser&
            StringToGUID("{D30C1661-CDAF-11d0-8A3E-00C04FC9E26E}",IID#)--IID_IWebBrowser2
            Error&=CallMethod(IUnknown&,0,IID#,addr(IWebBrowser&))-------IUnknown::QueryInterface
            print "Error IUnknown::QueryInterface",Error&
            print "IWebBrowser",IWebBrowser&
            print
            declare IHTMLDocument2&
            Error&=CallMethod(IWebbrowser&,18,addr(IHTMLDocument2&))--IWebbrowser::get_Document
            print "Error IWebbrowser::get_Document",Error&
            print "IHTMLDocument2",IHTMLDocument2&
            print
            declare IHTMLElement&
            Error&=CallMethod(IHTMLDocument2&,9,addr(IHTMLElement&))--IHTMLDocument2::get_body
            print "Error IHTMLDocument2::get_body",Error&
            print "IHTMLElement",IHTMLElement&
            print
            declare Text&
            Error&=CallMethod(IHTMLElement&,62,addr(Text&))--IHTMLElement::get_outerHTML
            print "Error IHTMLElement::get_outerHTML",Error&
            print "Pointer outerHTML",Text&
            declare Size&,Text#,Text$
            Size&=external("oleaut32","SysStringLen",Text&)
            dim Text#,Size&
            ~WideCharToMultiByte(0,0,Text&,-1,Text#,Size&,0,0)
            external("oleaut32","SysFreeString",Text&)
            Text$=string$(Text#,0)
            dispose Text#
            dispose IID#
            external("ole32","CoUninitialize")
            return Text$
            endproc-----------------------------------------------------------------------
            --------------------------------------------------------------------------------------------
            window 0,0-800,600
            usermessages 16
            def AtlAxWinInit(0) !"atl.dll","AtlAxWinInit"
            def AtlAxCreateControl(4) !"atl.dll","AtlAxCreateControl"
            declare Atl&,Web&,a$
            Atl&=usedll("atl.dll")
            AtlAxWinInit()
            a$="C:Test.html"-----------Pfad oder URL
            Web&=control("AtlAxWin",a$,$50300000,400,0,380,250,%hwnd,0,0,$200)-HTML-Contol anlegen
            a$=Quelltext_Lesen(Web&)
            create("Multiedit",%hwnd,a$,0,290,780,250)----Text anzeigen

            while 1

                waitinput
                case %umessage=16:break

            endwhile

            destroywindow(Web&)
            freedll Atl&

Der Haken daran: Du erwähntest Frames... In dem Fall wirst du nur den Frameset angezeigt kriegen, es sei denn, du kannst die gewünschte Seite direkt anspringen.

Ich werde aber noch nach den anderen Möglichkeiten schaun

BTW: Wird den die besagte Seite überhaupt im Cache abgelegt (wenn sie sicherheitsrelevant ist, kann das doch auch unterdrückt werden)?

HTH
Pascal
 
06.05.2006  
 




Georg
Hovenbitzer
Hallo Pascal,

der Code klappt mit zwei kleinen Änderungen sehr gut.
Dem Multiedit sollte man den Inhalt per Sendmessage zukommen lassen, da die meisten Seiten mehr als 255 Zeichen haben.
Desweiteren habe ich nach dem AtlAxWin Control Aufruf ein Waitinput gesetzt, da es wenn die Seite noch nicht vollständig geladen wurde zu einem Systemfehler kommt.

Ich kenne mich mit COM überhaupt nicht aus, kommt man nun an das original Browserfenster ran oder muss man sich immer ein eigenes erstellen?
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
08.05.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.665 Betrachtungen

Unbenanntvor 0 min.
Thomas Freier18.07.2018
Peter Max Müller07.11.2017
Oliver17.03.2016
Michael Borowiak27.11.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie