Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Giihh

Capturar conteudo de outro site

Recommended Posts

Olá, estou utilizando o seguinte código para capturar conteúdo do site do banco central

<?php

$ch = curl_init();
$timeout = 0;
curl_setopt($ch, CURLOPT_URL, 'http://www.bcb.gov.br/pt-br/paginas/default.aspx');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$conteudo = curl_exec ($ch);

echo $conteudo ;

?>

Esta capturando toda a página e exibindo na pagina que quero no meu site, mas preciso somente do trecho abaixo da página, que é onde esta a tabelinha do cambio:

<div class="block">    <h3>Câmbio</h3>    <div class="tabela">      <table border="0" cellpadding="0" cellspacing="0">        <tbody>          <tr>            <td width="33%" align="left" bgcolor="#f8f5f6">              <strong>Dólar EUA</strong>            </td>            <td valign="top" width="23%" align="left" bgcolor="#f8f5f6">              <strong>  compra</strong>            </td>            <td valign="top" width="23%" align="left" bgcolor="#f8f5f6">              <strong>  venda</strong>            </td>          </tr>          <tr>            <td width="33%" align="left" bgcolor="#f8f5f6">              31/07 (PTAX)            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,3934            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,3940            </td>          </tr>          <tr>            <td width="33%" align="left" bgcolor="#f8f5f6">              31/07<span><strong>–</strong></span>13:00            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,4080            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,4086            </td>          </tr>          <tr>            <td width="33%" align="left">              <strong>euro</strong>            </td>            <td width="23%" align="center">             </td>            <td width="23%" align="center">             </td>          </tr>          <tr>            <td width="33%" align="left" bgcolor="#f8f5f6">              31/07 (PTAX)            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,7419            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,7429            </td>          </tr>          <tr>            <td width="33%" align="left" bgcolor="#f8f5f6">              31/07<span><strong>–</strong></span>13:00            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,7580            </td>            <td width="23%" align="center" bgcolor="#f8f5f6">              3,7590            </td>          </tr>          <tr>            <td colspan="3" align="right" height="18">              <a href="/?TXCOTACAO">                mais moedas</a>            </td>          </tr>          <tr><td colspan="3"></td></tr>          <tr class="">              <td colspan="2" class="textoPeqColuna">                 <strong>SML BRL/ARS</strong>              </td>          </tr>          <tr class="">              <td class="textoPeqColuna" bgcolor="#f8f5f6">                  31/07              </td>              <td colspan="2" class="textoPeqColuna" style="text-align: right;" bgcolor="#f8f5f6">                  0,36940<span class="espacoReduzido"></span>              </td>          </tr>          <tr class="">              <td colspan="3" class="textoPeqColuna">                 <strong>SML BRL/UYU</strong>              </td>          </tr>          <tr class="">              <td class="textoPeqColuna" bgcolor="#f8f5f6">                  31/07              </td>              <td colspan="2" class="textoPeqColuna" style="text-align: right;" bgcolor="#f8f5f6">                  0,11920<span class="espacoReduzido"></span>              </td>          </tr>          <tr class="">              <td colspan="3" style="text-align: right; padding-bottom: 5px;">                  <a title="ver histórico" href="/?SMLHIST"><span class="maisColunaEsq">ver histórico</span></a>              </td>          </tr>        </tbody>      </table>    </div></div>

Alguém poderia me ajudar a saber como delimitar o que será capturado?

 

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conteúdo obtido em:

http://forum.imasters.com.br/topic/436100-resolvidopegar-parte-de-site-e-mostrar-no-meu/

<?php
$WebSite = 'http://forum.imasters.com.br/topic/436100-pegar-parte-de-site-e-mostrar-no-meu/';
$DOMDocument = new DOMDocument( '1.0', 'utf-8' );
$DOMDocument->preserveWhiteSpace = false;
@$DOMDocument->loadHTML( file_get_contents( $WebSite ) );
$DOMXPath = new DOMXPath( $DOMDocument );
echo utf8_decode( $DOMXPath->query( './/meta[@name="keywords"]' )->item( 0 )->getAttribute( 'content' ) );
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Conteúdo obtido em:

http://forum.imasters.com.br/topic/436100-resolvidopegar-parte-de-site-e-mostrar-no-meu/

<?php
$WebSite = 'http://forum.imasters.com.br/topic/436100-pegar-parte-de-site-e-mostrar-no-meu/';
$DOMDocument = new DOMDocument( '1.0', 'utf-8' );
$DOMDocument->preserveWhiteSpace = false;
@$DOMDocument->loadHTML( file_get_contents( $WebSite ) );
$DOMXPath = new DOMXPath( $DOMDocument );
echo utf8_decode( $DOMXPath->query( './/meta[@name="keywords"]' )->item( 0 )->getAttribute( 'content' ) );
?>

 

Obrigada, mas dessa forma não entendi esse trecho: query( './/meta[@name=keywords]' )->item( 0 )->getAttribute( 'content' )

 

Só entendi que o getAttribute( 'content' ) vai capturar o que tiver na tag content, se for isso mesmo e eu seguir essa lógica escolhendo a classe="block", a página tem muitos itens com essa classe ai não vai dar certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor :D , sei bem pouco sobre expressões regulares, acabei de ver alguns videos na verdade. alguem sabe me dizer o que fazem essas duas expressão regulares?

 

'/ORES-->(.+)<!--/s'

 

'.//meta[@name=keywords]'

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, na linha:

$DOMXPath->query( './/meta[@name="keywords"]' )->item( 0 )->getAttribute( 'content' )

ele vai buscar no site toda 'meta' que tiver o nome 'keywords' e capturar o 'content' dela

 

exemplo:

<meta name="keywords" content="Este é o conteúdo que o código vai capturar." />

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.