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:

  • Le code source HTML est sur une seule ligne
  • L’information qui nous intéresse est perdue dans une masse d’HTML
  • Ou bien elle est accessible uniquement en Javascript.

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:

  • Les expressions régulières
  • XPath dans le DOM

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.