Scraper une page web

En SEO, il est très utile de récupérer le code-source d’une page web :

  • Récupérer les URLs d’un site
  • Comparer des pages

Une liste qu’on ne pourrait finir, tant les possibilités sont vastes.

Récupérer le code-source d’une page

En php, il est très facile de récupérer le code-source d’une page. Je vous propose 2 scripts avec 2 méthodes différentes.

Scraper Curl

La fonction Curl permet de récupérer notamment le contenu d’une page, voici un script php avec Curl :

/***
Code d'un scraper avec Curl réalisé par Insimule.com
***/
function scraper ($url) {
//permet de récupérer le contenu d'une page
// User Agent
$ua = 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
// le scraper suit les redirections
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
curl_close ( $ch );
return $result;
}

Ce code permet de récupérer le contenu d’une page quelle soit redirigée ou non, et renvoie son code-source.
Pour utiliser cette fonction, il suffit de l’appeler en mettant en paramètre l’URL du site que vous voulez scraper.
Le code complet :

<?php
/***
Code d'un scraper avec Curl réalisé par Insimule.com
***/
function scraper ($url) {
//permet de récupérer le contenu d'une page
// User Agent
$ua = 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
// le scraper suit les redirections
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
curl_close ( $ch );
return $result;
}
// L'URL du site à scraper
$url = 'http://www.monsite.com';
echo '<pre>';
echo scraper($url);
echo '</pre>';
?>

Ce script affichera le code source de la page présent dans la variable $url.

Récupérer le code d’une page avec file_get_contents

Une autre méthode existe pour récupérer le code-source d’une page à partir de son URL, c’est d’utiliser la fonction file_get_contents(), voici un script php :

<?php
/***
Code d'un scraper avec file_get_contents, réalisé par Insimule.com
***/
// url à scraper
$url = 'http://exemple.com';
$page = file_get_contents($url);
echo '<pre>';
echo $page;
echo '</pre>';
?>

Ces fonctions php peuvent ne pas fonctionner sur certains serveurs, comme ceux de free.

Avec ces scripts php, vous allez pouvoir scraper une URL… Mais cela pourrait être une liste d’URL, Google ou autre chose… Laissez votre imagination faire le reste pour utiliser ces fonctions dans vos besoins…

Bon scrap !

N'hésitez pas à partager !
Share on Facebook0Share on Google+0Tweet about this on Twitter0Share on LinkedIn0

5 réflexions au sujet de « Scraper une page web »

  1. Tri

    Salut,

    Super cette fonction 🙂 Cependant j’ai un petit problème, j’ai testé la fonction sur divers site et ça fonctionne sans problème. Cependant avec cet URL par exemple :

    http://www.wakfu.com/fr/mmorpg/encyclopedie/objets/109-equipements/100-armes/518-armes-1-main/i7056-aiguille-piou

    Rien n’est retourné. Alors est ce que c’est un problème avec le UserAgent ou le serveur du site en question qui bloque la requête je ne sais pas 🙁

    Aurais tu une idée.

    PS : j’aimerais utiliser cette fonction pour pouvoir faire de la mise à jour dynamique d’une BDD à partir d’info se trouvant sur des URL précises.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *