CÓDIGO

PHP Simple HTML DOM Parser - Tutorial - Extrair dados de website

PHP Simple HTML DOM Parser é uma biblioteca para extrair conteúdo específico de um site e publicá-lo em outro site. Web scraping é o processo de extração de dados ou conteúdo de um site. Os dados ou conteúdos extraídos podem ser publicados em outros sites ou salvos em um banco de dados. Ao contrário do screen scraping, que captura o conteúdo como uma imagem, o web scraping extrai o código HTML subjacente para recuperar os dados ou o conteúdo do site.

Passo 1: Descarregue a bibiloteca PHP Simple HTML DOM Parser no seguinte endereço.

https://simplehtmldom.sourceforge.io/
https://simplehtmldom.sourceforge.io/manual.htm

Passo 2:

Neste exemplo os dados serão valores de metais preciosos (Platina, Paládio e Ródio) retirados do site: https://www.kitco.com/market/

PHP Simple HTML DOM Parser - Tutorial - Extrair dados de website

No seu navegador prima F11, ou botão direito do rato e inspecionar.
Identifique os campos dos quais quer recolher os valores. Neste caso, Platina tem o id PT-bid.

kitco market 2

Passo 3: Crie um ficheiro PHP para descarregar os dados e insira a biblioteca PHP Simple HTML DOM Parser.

<?php 
include_once('simple_html_dom.php');

Insira o caminho para a página de onde deseja retirar os dados.

$html = file_get_html('https://www.kitco.com/market/');
$date_start = date('Y-m-d H:i:s', time()); // grava a data

Passo 4: Identificar elementos, extrair valores, converter de onças para gramas. 1 onça = 28.3495231 gramas

$PT = $html->getElementById("PT-bid"); // identifica o elemento Platina.
$PT =$PT->plaintext; // Extrai o valor do campo.
$pt_g = ($PT/28.3495231); // Converte o valor de onças para gramas.
$PD = $html->getElementById("PD-bid"); // identifica o elemento Paládio.
$PD = $PD->plaintext; // Extrai o valor do campo.
$pd_g = ($PD/28.3495231); // Converte o valor de onças para gramas.
$RH = $html->getElementById("RH-bid"); // identifica o elemento Ródio
$RH = $RH->plaintext; // Extrai o valor do campo.
$rh_g = ($RH/28.3495231); // Converte o valor de onças para gramas.

Passo 5: Converter os valores de Dollar para Euro: 
Na mesma página, identifique a cotação.

kitco market 3

 

foreach($html->find('div.item_container.exchange_rates table tr td.index') as $e){
$arr[] = trim($e->innertext);
}

$dollar = $arr[2];

$PT_Euro = (number_format($pt_g,"2")*$dollar);
$PD_Euro = (number_format($pd_g,"2")*$dollar);
$RH_Euro = (number_format($rh_g,"2")*$dollar);

Passo 6: Apresentar os dados

<div class="container">
<?php echo $date_start ." <b>Cotação Euro/Dollar</b>: ". $dollar ."<hr>"; ?> <div class="row"> <div class="col-sm-4"> <div class="card"> <div class="card-body"> <h5 class="card-title">PLATINUM</h5> <p class="card-text"> Oz/Dollar: <?php echo number_format($PT,"2");?><br/> Gr/Dollar: <?php echo number_format($pt_g,"2");?><br/> Gr/Euro: <?php echo number_format($PT_Euro,"2");?><br/> </div> </div> </div> <div class="col-sm-4"> <div class="card"> <div class="card-body"> <h5 class="card-title">PALLADIUM</h5> <p class="card-text"> Oz/Dollar: <?php echo number_format($PD,"2");?><br/> Gr/Dollar: <?php echo number_format($pd_g,"2");?><br/> Gr/Euro: <?php echo number_format($PD_Euro,"2");?><br/> </div> </div> </div> <div class="col-sm-4"> <div class="card"> <div class="card-body"> <h5 class="card-title">RHODIUM</h5> <p class="card-text"> Oz/Dollar: <?php echo number_format($RH,"2");?><br/> Gr/Dollar: <?php echo number_format($rh_g,"2");?><br/> Gr/Euro: <?php echo number_format($RH_Euro,"2");?><br/> </p> </div> </div> </div> </div> </div>

Passo 7: Caso deseje gravar os dados numa base de dados, pode fazê-lo da seguinte forma:

<?php 
$sql = "INSERT INTO NOME-DA-TABELA (platinum, palladium, rhodium, date_start) VALUES ($PT_Euro, $PD_Euro, $RH_Euro, '$date_start')";
if(mysqli_query($conn, $sql)){
    echo '<div class="container">Os valores foram Gravados na base de dados.</div>';
} else{
    echo '<div class="container">ERROR: Could not able to execute $sql. ' . mysqli_error($conn) . '</div>';
}
?>

 Resultado Final:

PHP Simple HTML DOM Parser