Vamos aprender como utilizar o PHP para retirar conteúdo de uma página sem ter de usar REGEX. Neste exemplo vamos capturar 2 dados: A cotação de compra do dolar e a data da cotação.
A página em si é esta: Banco Central do Brasil – Dolar Americano.
Lembrando que antes de retirar o conteúdo de qualquer página para uso em seu site, pergunte ao dono do site se o dado pode ser utilizado.
Entre na página e visualize o código fonte de onde você irá retirar o conteúdo. Neste caso eu vou retirar basicamente esta parte do código:
<td ALIGN="CENTER" class="fundoPadraoBClaro2">11/06/2010</td><td ALIGN="right" class="fundoPadraoBClaro2">1,8117</td>
Agora vamos começar o PHP, primeiro vamos pegar a URL do site acima:
//URL DO SITE A SER CAPTURADO $url = 'http://www4.bcb.gov.br/pec/taxas/batch/taxas.asp?id=txdolar&id=txdolar';
Depois vamos pegar todo código html da página e jogar em uma variável do tipo String usando o file_get_contents
//PEGAR TODO CÓDIGO HTML PARA UMA VARIAVEL STRING $site = file_get_contents($url);
Vamos pegar a data primeiro, vamos pegar o código HTML que envolve a data e coloca-la em um explode, primeiro a TAG anterior e depois a que fecha o dado em si.
//PEGAR A DATA $data1 = explode('<td ALIGN="CENTER" class="fundoPadraoBClaro2">', $site); $data2 = explode('</td>',$data1[1]); $data = $data2[0];
Agora vamos pegar a cotação seguindo o mesmo processo acima.
//PEGAR COTAÇÃO $cotacao1 = explode('<td ALIGN="right" class="fundoPadraoBClaro2">', $site); $cotacao2 = explode('</td>',$cotacao1[1]); $cotacao = $cotacao2[0];
Agora vamos ver o resultado final
print 'Data: '.$data.' Cotação: R$ '.$cotacao;
Pronto, abaixo o script completo:
<?php //CODIGO HTML: <td ALIGN="CENTER" class="fundoPadraoBClaro2">11/06/2010</td><td ALIGN="right" class="fundoPadraoBClaro2">1,8117</td> //URL DO SITE A SER CAPTURADO $url = 'http://www4.bcb.gov.br/pec/taxas/batch/taxas.asp?id=txdolar&id=txdolar'; //PEGAR TODO CÓDIGO HTML PARA UMA VARIAVEL STRING $site = file_get_contents($url); //PEGAR A DATA $data1 = explode('<td ALIGN="CENTER" class="fundoPadraoBClaro2">', $site); $data2 = explode('</td>',$data1[1]); $data = $data2[0]; //PEGAR COTAÇÃO $cotacao1 = explode('<td ALIGN="right" class="fundoPadraoBClaro2">', $site); $cotacao2 = explode('</td>',$cotacao1[1]); $cotacao = $cotacao2[0]; print 'Data: '.$data.' Cotação: R$ '.$cotacao; ?>
Muito bom, estou quebrando a cabeça com um regex, mas pelo seu jeito é bem mais fácil.
obrigado
abs
George
Olá,
Eu estou tentando fazer examente o que você fez, más se o que eu quero de verdade é o valor de venda, ou seja, a 2ª tag , como eu faço para selecionar apenas a segunda?
grato
obs: a 2ª tag que eu quero é td ALIGN=”right” class=”fundoPadraoBClaro2″
faça desse jeito
<?php
//CODIGO HTML: 11/06/20101,8117
//URL DO SITE A SER CAPTURADO
$url = ‘http://www4.bcb.gov.br/pec/taxas/batch/taxas.asp?id=txdolar&id=txdolar';
//PEGAR TODO CÓDIGO HTML PARA UMA VARIAVEL STRING
$site = file_get_contents($url);
//PEGAR A DATA
$data1 = explode(”, $site);
$data2 = explode(”,$data1[1]);
$data = $data2[0];
//PEGAR COTAÇÃO
$cotacao1 = explode(”, $site);
$cotacao2 = explode(”,$cotacao1[1]);
$cotacao3 = explode(”, $site);
$cotacao4 = explode(”,$cotacao1[2]);
$compra = $cotacao2[0];
$venda =$cotacao4[0];
echo ”
DataTaxa de CompraTaxa de Venda
$dataR$ $compra$venda
fonte:Banco Central do Brasil
“;?>
Cara, muito obrigado.
Muito bom o artigo, parabéns.
Aprendi muito com isso.
Muito obrigado.
sinistro …
Gambiarra, mas que serve para quem ainda não sabe Expressão Regular.
Olá gostei muito deste tutorial, mas eu preciso pegar os dados que se repetem em uma página como uma lista por exemplo
1 ————-
2 ————-
3 ————-
com esse código eu consegui pegar exatamente o que quero nome, imagem, audio, mas eu gostaria de pegar de todos itens da lista eu só consigo pegar o primeiro item.
Grato
Paulo Duarte
Alguem ajuda o Paulo ai em cima faz favor
Cara gostei muito, mas eu queria saber como pegar um titulo, e a discrição de um post de um site.
Tipo.. Eu utilizo esse comando para verificar se um link esta on ou naum … Gostaria de saber, o feed é feito dessa maneira a captura da ´postagem .. Flws ateh mais …
A ideia é boa , so que , como fazer se o site necessitar de login e senha ?
Mesmo eu tendo acesso ao site n consigo pegar a pagina ! =/
Tem como ?