Ir para conteúdo
Fórum Script Brasil
  • 0

Como pegar o conteudo de um iframe?


Guest --dam547 --

Pergunta

Guest --dam547 --

Pessoal, dentro da minha página tenho um iframe que chama uma página externa, pois bem, preciso pegar o conteudo deste iframe (Mais precisamente o código fonte), já tentei usar as seguintes técnicas:

var x = document.getElementsByTagName("iframe")[0].contentDocument

var iframe = document.getElementById("iframe").contentWindow;
var conteudo = iframe.getElementsByTagName('body')[0]
alert(conteudo.innerHTML)

Ambas não obtive sucesso...

Se alguém tiver alguma opinião será bem vinda!

Abraços,

Felipe Damiani

Editado por fercosmig
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Felipão, seguinte.

Para verificar o conteúdo do primeiro iframe da página, tanto para iE quanto para FF é :

window.onload=function(){
ifr=document.getElementsByTagName("iframe")[0]

    if(ifr.contentWindow)
    ifr=ifr.contentWindow.document
    else
    ifr=ifr.contentDocument

alert(ifr.body.innerHTML)
}

Simples. No entanto, se quiser pegar um valor de uma página que não te pertence, externa ao seu servidor, pode desistir.

Você não pode pegar o conteúdo de uma página de domínio diferente, apenas no seu próprio domínio. Dará um erro de "Acesso negado" muito provavelmente. Isso é com iFrames e Ajax.

Akeleabraço

Link para o comentário
Compartilhar em outros sites

  • 0
Tenta:

opener.nome_do_form.nome_do_campo.value = document.getElementById("nome_campo_outra_pagina").value;
Andreia, obrigado pela resposta, mais não resolve meu problema! :)
Felipão, seguinte. Para verificar o conteúdo do primeiro iframe da página, tanto para iE quanto para FF é :
window.onload=function(){
ifr=document.getElementsByTagName("iframe")[0]

    if(ifr.contentWindow)
    ifr=ifr.contentWindow.document
    else
    ifr=ifr.contentDocument

alert(ifr.body.innerHTML)
}

Simples. No entanto, se quiser pegar um valor de uma página que não te pertence, externa ao seu servidor, pode desistir.

Você não pode pegar o conteúdo de uma página de domínio diferente, apenas no seu próprio domínio. Dará um erro de "Acesso negado" muito provavelmente. Isso é com iFrames e Ajax.

Akeleabraço

Cara, acho que o meu problema não tem solução então hehe, a página que estou tentanto pegar o fonte é uma página externa :(,

será que não tem nenhum jeito de conseguir pegar???

Estou precisando muito disso, mais vou ver se acho um outro método para resolver esse problema....

qualquer dica será bem vinda,

Abraço a todos,

Felipe Damiani

Link para o comentário
Compartilhar em outros sites

  • 0

É não tem como fazer não....Se tiver alguma forma de fazer isso pode ser com linguagens de servidor, tipo php. Talvez tentando dar um include sei lá. Mas tenho a impressão de que o include também não vai funcionar...

Eu de você deixava pra lá...isso não tem nenhuma utilidade a não ser copiar conteúdo alheio.

Por isso existem as api´s, que são interfaces que alguns sites disponibilizam para alguma operação conjunta.

Akeleabraço

Link para o comentário
Compartilhar em outros sites

  • 0
É não tem como fazer não....Se tiver alguma forma de fazer isso pode ser com linguagens de servidor, tipo php. Talvez tentando dar um include sei lá. Mas tenho a impressão de que o include também não vai funcionar...

Eu de você deixava pra lá...isso não tem nenhuma utilidade a não ser copiar conteúdo alheio.

Por isso existem as api´s, que são interfaces que alguns sites disponibilizam para alguma operação conjunta.

Akeleabraço

Na verdade não é conteúdo alheio, mesmo porque a página que estou tentando copiar precisa de login e senha, então a idéia é fazer login, após isso ir para uma página onde lista produtos, a partir dai pegar o fonte para importar esses produtos para um banco remoto...

Vou dar mais uma pesquisada para ver se acho algma outra solução!

Abraços,

Felipe Damiani

Link para o comentário
Compartilhar em outros sites

  • 0

Precisei e consegui fazer em Delphi. Veja os links :

http://www.delphifaq.com/faq/delphi/network/f249.shtml

http://www.scalabium.com/faq/dct0139.htm

https://www.clubedohardware.com.br/forums/topic/827939-como-ler-o-conteúdo-de-um-site-por-um-memo/

Adaptei o demo do Delphi (C:\Delphi7\Demos\CoolStuf\webbrows.dpr) e alterei os trecho dos codigo abaixo:

procedure TMainForm.FindAddress;
var
  EncodedDataString: string;
  PostData: OleVariant;
  Headers: OleVariant;
  i: integer;
begin
 //   http://www.delphifaq.com/faq/delphi/network/f249.shtml
  // First, create a URL encoded string of the data
  EncodedDataString := 'userName='+HTTPEncode('Luiz Inacio')+'&'+'UserPass='+HTTPEncode('MyPassword');

  // The PostData OleVariant needs to be an array of bytes
  // as large as the string (minus the 0 terminator)
  PostData := VarArrayCreate([0, length(EncodedDataString)-1], varByte);

  // Now, move the Ordinal value of the character into the PostData array
  for i := 1 to length(EncodedDataString) do
    PostData[i-1] := ord(EncodedDataString);
  Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;

  // Parameters 2 and 3 are not used, thus EmptyParam is passed.
  WebBrowser1.Navigate('https://www.site_a_consultar.com.br',
                       EmptyParam, EmptyParam, PostData, Headers);
{
 //   http://www.scalabium.com/faq/dct0139.htm
   p:='='+HTTPEncode();
  h := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
  UpdateCombo := True;
  //WebBrowser1.Navigate(WideString(Urls.Text), Flags, Flags, p, Flags);
  WebBrowser1.Navigate(WideString(''), EmptyParam, EmptyParam, p, h);
}
end;
 

procedure TMainForm.WebBrowser1DownloadComplete(Sender: TObject);
var
oStringList: TStringList;
html : string;
begin
  { Turn the stop button grey }
  StopBtn.ImageIndex := 2;
  { Stop the avi and show the first frame }
  Animate1.Active := False;
  //https://www.clubedohardware.com.br/forums/topic/827939-como-ler-o-conteúdo-de-um-site-por-um-memo/
  oStringList := TStringList.Create;
  try
    oStringList.Text := WebBrowser1.OleObject.document.Body.InnerHTML;
  html := oStringList.Text;
  except
  end;
  oStringList.Free;
  showmessage(html);
end;

Espero ter ajudado. Acho que ainda dá tempo. rsrsrs    :)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...