Index de l'article

Récupération des données

La bibliothèque simple_html_dom

Pour exécuter ce type de tâche, nous allons devoir parser les pages du site. La bibliothèque PHP simple_html_dom sera nécessaire.

Téléchargez-là et dézippez-la. Nous partons du principe que vous avez le fichier simple_html_dom.php à la racine de votre application.

Pour l'utiliser, il vous faudra ensuite l'appeler dans vos fichiers :

include_once('simple_html_dom.php');

Où sont les données

Dans les pages du site, vous devez observer le code (F12) afin de comprendre comment sont diffuser les données : dans des balises HTML, des classes ou des identifiants CSS...

À terme nous les récupérerons en PHP de cette façon. Observez les classes et identifiants CSS utilisés :

// Appel des contenus
foreach($html->find('.org') as $society) ;
foreach($html->find('.fn') as $name) ;
foreach($html->find('.street-address') as $address) ;
foreach($html->find('.postal-code') as $postal) ;
foreach($html->find('.locality') as $city) ;
foreach($html->find('.email') as $email) ;
foreach($html->find('.grill-row .value') as $category) ;
foreach($html->find('.tel') as $phone) ;
foreach($html->find('#op-info span.url span') as $website) ;

Mais testez d'abord que vous êtes capable de récupérer les données organisées d'une seule ligne (d'une seule page du site internet).

Ici par exemple en HTML, nous appelons la page dans un simple file_get_html, puis nous récuperons les contenus plein texte de classes et identifiants CSS (.org.tel , #op-info span.url span...). Ne laissez qu'un seul foreach pour vos 1ers tests, en fonction de ce que vous observez dans le code de votre site, ce sera plus simple.

<?php
 
include_once('simple_html_dom.php');
 
$html = file_get_html('http://site-indiscret.com/contacts/45988') ;
 
foreach($html->find('.org') as $name) {
echo '<td>'.$name->plaintext.'</td>' ;
}
foreach($html->find('.fn') as $contact) {
echo '<td>'.$contact->plaintext.'</td>' ;
}
foreach($html->find('.street-address') as $address) {
echo '<td>'.$address->plaintext.'</td>' ;
}
foreach($html->find('.postal-code') as $postal) {
echo '<td>'.$postal->plaintext.'</td>' ;
}
foreach($html->find('.locality') as $city) {
echo '<td>'.$city->plaintext.'</td>' ;
}
foreach($html->find('.email') as $email) {
echo '<td>'.$email->plaintext.'</td>' ;
}
foreach($html->find('.tel') as $tel) {
echo '<td>'.$tel->plaintext.'</td>' ;
}
foreach($html->find('#op-info span.url span') as $url) {
echo '<td>'.$url->plaintext.'</td>' ;
}
foreach($html->find('.grill-row .value') as $category) {
echo '<td>'.$category->plaintext.'</td>' ;
}
 
?>

Sur votre navigateur vous devez être capable d'y voir les données de la page.

Bien sûr ici l'URL utilisée est fausse (dans le file_get_html). Avec une vraie URL il vous faut uniquement adapter les classes CSS utilisées.