Capturando conteúdo de sites em PHP

Aprenda a mascarar notícias fazendo com que pareça que você quem acabou de colocá-las em seu site ou consultar sites e adaptar a resposta para o visual do seu.

[ Hits: 42.698 ]

Por: william de melo gueiros em 30/05/2003


Introdução



Estamos ai de volta, por motivos do além não estava conseguindo acessar o site VivaoLinux.com.br, mas isso não vem ao caso.

Vamos iniciar nosso artigo. Wilbil, como você conseguiu chegar a estes comandos?
Pessoal, é o seguinte, mascarar um site nada mais é do que manipular arquivos txt e mais nada.

Qual site você vai mostrar como se mascara?
A empresa onde trabalho necessita mascarar algumas respostas que são muito sigilosas, o que acontece por não haver muito sobre este assunto em PHP explicando detalhadamente, resolvi então fazer o artigo. Podem me enviar perguntas falando a url que vocês querem mascarar que dou a dica.

Vamos parar de teoria e ir para a prática:

<?
$url = "http://www.seilaqualsite.com.br";

$conecurl = @fopen("$url","r") or die ('<center>erro na conexão<br><b>informe o administrador erro 15 </b></center>');

while(!feof($conecurl)) {
$lin .= fgets($conecurl,4096);
}
fclose($conecurl);
?>

Primeiramente o script abre a url que por sinal é um teste e caso ele não consiga abrir retorna um erro. Você pode abrir qualquer tipo de URL, seja http, https, sites em html, php, asp, jsp, etc.

Para que serve este while com feof?
Serve para percorrer todo o arquivo e gravar seu conteúdo para a variável $lin.

Ou seja, $lin armazenará o conteúdo da url que você especificou. Neste caso conteúdo é igual à código-fonte do site. Por fim, fecha-se a conexão com o site através da função fclose.

Mas Wilbil, o que isso tem a ver com arquivo txt?
Os comandos são os mesmos.

Agora vem os comandos para você localizar algo dentro deste html. Digamos que quero pegar em que posição de caractere está a primeira tabela do site VivaoLinux.com.br

<?
$url = "www.vivaolinux.com.br";
// só isso que vou mudar do que já mostrei no inicio

$conecurl = @fopen("$url","r") or die ('<center>erro na conexão<br><b>informe o administrador erro 15 </b></center>');

while(!feof($conecurl)) {
$lin .= fgets($conecurl,4096);
}
fclose($conecurl);

$nprimetable = strpos($lin,'<table border="0" cellpadding="0" cellspacing="0" width="779">');

// ele vai me retornar o primeiro table do site
$fechatable = strpos($lin,'</table>');
?>

Agora que já sabemos de onde até onde vamos tirar a média, é aquele negócio que você fazia na escola e sempre dava vermelho por mais que você se esforcasse em roubar nota.

<?
$quantopula = $fechatable - $nprimetable ;

// vou ensinar como funciona o comando substr
substr($lin,onde começa ,pula quantos caracteres);

$conteudo = substr($lin, $nprimetable ,$quantopula);

// pronto agora e só dar um echo no conteudo e pronto acaba de aprender
// a filtrar sites


echo $conteudo;
?>
Se der erro no seu script e se tiver alguma dúvida, mande-a aqui pelo site mesmo.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Instalando o Java Plug-in no Mozilla

Migrando de Red Hat para Debian

Executando backup do MySQL e enviando por FTP

Leitura recomendada

Turck MMcache completo e sem mistérios

Criando sites para celular com WML

Criando gráficos com a classe JPGraph (parte 2)

Usando classes em conexão e consultas à banco de dados em PHP

Prado - Orientação a componentes em PHP

  
Comentários
[1] Comentário enviado por wilbil em 26/07/2003 - 20:15h

recentemente

tive problemas com a captira de site com conteudo https
que so funcionava se eu passase
pelo ssl

o problema pode ser solucionado compilando o php-4.3 ou superior
com a opcao de --with-ssl

com versoes inferiores nao funciona
deste modo que foi explicado no site

[2] Comentário enviado por ilrdesigner em 23/05/2005 - 11:18h

Fala amigo... lendo o seu artido sobre capturar codigos das paginas achei interessante... mas naum consegui fazer. como vou capturar o conteúdo das páginas e onde esse conteúdo ficará armazenado????
Abraços

[3] Comentário enviado por wilbil em 24/05/2005 - 11:51h

o conteudo total fica dentro da variavel $lin
depois de pegar inumeras posicoes dentro do site ele gera o novo conteudo dentro da variavel $conteudo

estarei arrumando este codigofonte para este novo designer do vivaolinux
hoje anoite ponho no ar para vc!!

[4] Comentário enviado por regisquinelato em 01/03/2006 - 10:31h

Amigo Willbil, eu copiei o código para minha máquina e executei mas alguns sites ele mostra outros não. Mas até então continuo sem solução gostaria apenas de linkar as notícias no site. Por exemplo existe um site de notícias e gostaria de pegar as informações nele contida, como isso é possível?

Obrigado.

[5] Comentário enviado por jcarlosrocha em 19/08/2007 - 12:04h

Opa Wil, ótimo artigo mas, como faço para capturar notícias de alguns sites para coloca no meu ?

obrigado

[6] Comentário enviado por jhsiqueira em 03/10/2007 - 22:40h

olá, nao estou conseguindo capturar dados de uma pagina .jsp com protocolo https. passo o endereco da pagina https://endereco... e ele diz que a sessão está expirada. Em uma outra janela eu estou com o mesmo site aberto, onde já informei meu login e senha... neste caso como devo proceder? Obirgado desde já

[7] Comentário enviado por wilbil em 17/10/2007 - 11:47h

pessoal estive recebendo alguns e-mails sobre pessoas tentando carregar session de um determinado site so para poder pegar seu conteudo interno isso e possivel mas nao por fopen!! de uma estudada em $ch = curl_init(); que inicia um mini browser e antes de enviar um post tem que configuralo com curl_setopt($ch, CURLOPT_URL,"http://$URL");!!curl_setopt($ch, CURLOPT_POST, 1); !! curl_setopt($ch, CURLOPT_POSTFIELDS,$dadosenv); !! entre outros contate o manual para ver as outras configuracao depois de configurar e so pegar o conteudo html e fazer sua logica $html = curl_exec ($ch);

[8] Comentário enviado por salgado em 19/10/2007 - 11:23h

Willian estou tentando capturar parte desse site(http://www.ioepa.com.br/site/diario_justica.asp)
que está dentro de <blockquote></blockquote>

mas o script demora muito pra responder e depois da uns erros.

vc pode me ajudar ?

[9] Comentário enviado por wilbil em 20/10/2007 - 11:18h

cara se vc puder me mandar o erro ajuda bastante
o que ele mostra depois de tanto tempo!!!!

[10] Comentário enviado por thiagonovato em 12/06/2008 - 10:37h

Blz cara... funcionou perfeitamente. Ótimo artigo!

[11] Comentário enviado por condesales em 30/09/2008 - 17:29h

muito bom msm, me ajudou bastante

[12] Comentário enviado por comfaa em 28/10/2008 - 12:58h

muito legal !!!

[13] Comentário enviado por luckyo em 26/03/2010 - 15:21h

Boa tarde!

Tentei usar o seu código para criar um gerador de links mais não consegui

erro na conexão
informe o administrador erro 15

Consigo lista somente aonde eu administro.

Poderia me ajudar?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts