Récupérer des informations sur un site: le scraping

Ecrit le 29/07/2017

Pour certains sites, une API est mise à disposition et cela facilite pas mal la vie. Pourquoi ? Les informations sont présentées de manière lisible et sa conversion en un quelque chose que l’on peut appeler est faite en une ligne. Dans l’autre cas, c’est-à-dire sans API, les choses se gâtent: il faudra parser la sortie HTML et ce n’est souvent pas facile pour les raisons suivantes:

En bref, cela peut être vraiment pénible d’aller chercher ce que l’on veut. Dans cet article, je comparerai les cas avec une API à notre disposition et sans.

Avec une API

Ce cas est idéal dans le sens que les informations données par le serveur sont directement exploitables sans se compliquer la vie. Je prendrai ici l’exemple de l’API MCAPI qui permet d’avoir des informations sur des serveurs Minecraft.

Disons que nous voulons des infromations sur un serveur, le code PHP serait très simple:

```php [Informations sur un serveur Minecraft] $curl = curl_init(‘https://mcapi.ca/query/hyderia.boxtoplay.com/status’);

curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => true, ));

$response = curl_exec($curl); $err = curl_error($curl);

curl_close($curl);

if ($err) { echo “cURL Error #:” . $err; }

$decoded = json_decode($response); print_r($decoded);

/* stdClass Object ( [status] => 1 [hostname] => hyderia.boxtoplay.com [port] => 32344 [ping] => 241 ) / ``` Comme on peut le voir, c’est simple comme bonjour d’aller chercher l’information. En bonus, si l’HTML d’un client “normal” change, les réponses de l’API ne seront pas affectées comme démontré sur l’API de Twitter qui malgré le changement de terminologie pour les *favs, garde ce nom dans les réponses.

Sans API

Là, les choses se corsent car on devra aller chercher de l’HTML comme tout le monde. Des fois, c’est la seule solution qui est à notre disposition: le scraping.

Il existe plusieurs techniques de scraping, cependant, j’en ai utilisé que deux:

Je ne détaillerai pas ces techniques mais il y a quelque chose d’important à retenir quand on commence à scraper les pages: Il suffit que le code HTML change légèrement pour que plus rien ne fonctionne, comme illustré sur issue sur GitHib.