2009-03-24 12 views
6

¿Cómo puedo obtener el código fuente de la página a través de WebBrowser Control (ActiveX InternetExplorer)?¿Cómo puedo obtener el código fuente de la página a través de WebBrowser-Control (ActiveX InternetExplorer)?

Tengo un documento xml "foo.xml".

var 
Web: TWebBrowser; 
begin 
... 
Web.Navigate("foo.xml"); 
// How can I get source code thru WebBrower control<---- 
... 
end; 
+0

¿No es simplemente el contenido del archivo foo.xml, que puede cargar directamente de todos modos? –

+0

Creo que eso podría ser un ejemplo. –

+0

XML es el resultado de la solicitud Http. No es un archivo. – user82002

Respuesta

1

Pensé que esto sería fácil, pero parece que podría haber sido olvidado. Sin embargo, puedes hacerlo fácilmente con un control TidHTTP.

MyPage := IdHTTP1.Get('www.google.com'); 

Sé que no es lo que quieres, pero podría ayudarte.

+0

Lo sé. Pero quiero saber cómo se hizo con WebBrowser. – user82002

1

En el evento DocumentCompleted, mire la propiedad DocumentText del control WebBrowser. Debe tener el texto completo de la página cargada.

+0

No veo esa propiedad en Delphi 2005. ¿Se presentó en una versión posterior? –

1
IHTMLDocument2(Web.Document).Body.InnerHTML; 

Esto debería devolver el origen de la página.

+0

¿No omite el elemento HEAD, así como las etiquetas BODY de apertura y cierre? –

+0

No trabaje con contenido XML. – user82002

+0

Supongo que es su derecho. Quizás esto te ayude ?: http://www.delphidabbler.com/articles?article=14 –

1

Otro método que funciona bien es usar Synapse. Use la llamada de sinapsis HttpGet para recuperar su recurso inicial (que le proporciona el código fuente) y luego manipule según sea necesario.

Otra opción sería utilizar el componente EmbeddedWB que expone MUCHAS más propiedades y características del navegador web que el componente Delphi estándar y aún así se ajusta a su requisito de hacerlo dentro del navegador web.

+0

Sí, pero quiero saber cómo puedo hacerlo solo a través de ActiveX. – user82002

+0

Creo que el componente EmbeddedWB WRAPS IE, e incluye fuente completa. Es un buen punto de partida para ver cómo se hace. – skamradt

1

Para acceder a todo el HTML de la página a través del uso de control WebBrowser:

Web.Document.All[0].OutterHtml; 
1
private void btnTest_Click(object sender, EventArgs e) 
     { 
      wbMain.Navigate("foo.xml"); 
      wbMain.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(testing); 
     } 

     private void testing(Object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      test = wbMain.DocumentText; 
     } 

Sé que esto es un poco tarde, pero esto funciona para mí. wbMain es el Objeto WebBrowser.

1

WebBrowser1.Navigate() lo carga en la ventana del componente RAD utilizando el componente integrado de IE en el sistema operativo Windows. Lo que hace es responder a una devolución de llamada (para el componente del navegador, hacer doble clic en el evento OnDownloadComplete) y guardarlo en el archivo de esa función. Fragmentos de código de trabajo:

procedure TMainForm.WB_SaveAs_HTML(WB : TWebBrowser; const FileName : string) ; 
var 
    PersistStream: IPersistStreamInit; 
    Stream: IStream; 
    FileStream: TFileStream; 
begin 
    if not Assigned(WB.Document) then 
    begin 
    Logg('Document not loaded!') ; //'Logg' adds a line to a log file. 
    Exit; 
    end; 

    PersistStream := WB.Document as IPersistStreamInit; 
    FileStream := TFileStream.Create(FileName, fmCreate) ; 
    try 
    Stream := TStreamAdapter.Create(FileStream, soReference) as IStream; 
    if Failed(PersistStream.Save(Stream, True)) then ShowMessage('SaveAs HTML fail!') ; 
    finally 
    FileStream.Free; 
    end; 

end; (* WB_SaveAs_HTML *) 

procedure TMainForm.WebBrowser1DownloadComplete(Sender: TObject); 
begin 
    if (WebBrowser1.Document<>nil)AND NOT(WebBrowser1.busy) then begin 
     WB_SaveAs_HTML(WebBrowser1,'test.html'); 
     //myStringList.loadFromFile('test.html'); //process it. 
    end; 
end; 

en cuenta que algunos tipos MIME ("Archivo"), tales como JSON dan un cuadro de diálogo 'Guardar como ...' en el IE, que para su lectura y requiere intervención manual.

Cuestiones relacionadas