Ir para conteúdo

POWERED BY:

Arquivado

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

merlinus

[Resolvido] Como recuperar os dados de uma página externa?

Recommended Posts

Saudações, tive a ideia que minha aplicação capturasse as informações de um produto do site de cadastro de material e retornasse alguns valores.

então eu entraria com o codigo do produto

$id="2173077";

 

$WebSite = 'http://www.bec.sp.gov.br/BEC_Catalogo/CatalogDetalhe.aspx?chave=&cod_id='.$id;

 

$bec=file_get_contents( $WebSite );

 

Ate ai eu consegui precisaria que ele me retornasse

$Classe = 8930

$Material = 9750 - ACUCAR

$Item = 2173077 - ACUCAR OBTIDO DA CANA DE ACUCAR,CX. C/336 SACHES DE 6 GRAMAS CADA

$descrição = acucar; obtido da cana acucar, refinado granulado; com aspecto cor ,cheiro prprio, sabor doce; com teor de sacarose minimo de 99%p/p e umidade maxima de 0,4% p/p; sem fermentacao,isento de sujidades,parasitas, materiais terrosos e detritos animais ou vegetais; acondicionado em caixa com 336 saches de 6 gr cada e validade minima de 12 meses a contar da data da entrega; e suas condicoes deverao estar de acordo com a resolucao 271 de 22 de stembro de 2005 e suas alteracoes posteriores; produto sujeito a verificacao no ato da entrega aos proced. Administrativos determinados pela anvisa

 

Esse ultimo aparece como "detalhe do produto"

Tive essa ideia depois de ver um caso parecido que o Andrey Knupp resolveu com Domxpath,

mas não consegui Entender como se monta a query para usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada nesse exemplo que criei:

 

<?php

//Abre o site
$fp = @fopen('http://exemplo.com/', 'r');

$char = '';
while(!feof($fp)) {
$char .= fgetc($fp);
}
fclose($fp);

//Retorna todo o texto que está entre <span> e </span> para um array
preg_match_all("/<span>(.*)</span>/i", $char, $matches);

//Veja o array criado
var_dump($matches);

?>

 

É só um exemplo pra ser estudado, melhorado e adaptado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei, está dando:

 

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'p' in C:\webserver\apache\htdocs\bec.php on line 12

NULL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jcalebe, que desperdício de processamento isso aí hein ..

//Abre o site
$fp = @fopen('http://exemplo.com/', 'r');

$char = '';
while(!feof($fp)) {
       $char .= fgetc($fp);
}
fclose($fp);

Não precisa disso tudo, com o file_get_contents, você já resolve ..

 

<?php
     ini_set( 'display_errors', 'On' );
     $Codigo = '2173077';
     $Website = sprintf( 'http://www.bec.sp.gov.br/BEC_Catalogo/CatalogDetalhe.aspx?chave=&cod_id=%d', $Codigo ); 
     $DOMDocument = new DOMDocument( '1.0', 'utf-8' );
     $DOMDocument->preserveWhiteSpace = false;
     $DOMDocument->loadHTML( file_get_contents( $Website ) );
     $DOMXPath = new DOMXPath( $DOMDocument );
     $i = 0;
     foreach( $DOMXPath->query( './/table/tr/td/span[@class="labelConteudo"]' ) as $Nodes ){
        foreach( $Nodes->childNodes as $Node ){
           $Name = str_replace( ':', null, utf8_decode($Node->parentNode->parentNode->parentNode->getElementsByTagName( 'span' )->item( 0 )->nodeValue) );
    $Dados[ $Name ] = utf8_decode( $Node->nodeValue );               
         }
         $i++;
     }
     echo '<pre>';
     print_r( $Dados );

 

Saída:

andrey@andrey:~$ php -f /var/www/index.php
Array
(
   [Grupo] => 89 - GENEROS ALIMENTICIOS
   [Classe] => 8930 - ACUCARES E ARTIGOS PARA CONFEITARIAS
   [Material] => 9750 - ACUCAR
   [item] => 2173077 - ACUCAR OBTIDO DA CANA DE ACUCAR,CX. C/336 SACHES DE 6 GRAMAS CADA
   [situação] => Ativo
   [Natureza de Despesa] => 33903010
   [33909213] => 33909213
   [33909220] => 33909220
)
andrey@andrey:~$ 

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.