Scraper une page web

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

  • Récupérer les URLs d'un site
  • Scraper les TITLE des pages
  • Analyser les balises de hiérarchisation (<hn>)
  • Comparer des pages

Et je pourrais encore continuer cette liste 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 avec 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 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0';
	$ch = curl_init();
	if (preg_match('`^https://`i', $url))
	{//pour les URLs en HTTPS
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
	}
	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 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0';
	$ch = curl_init();
	if (preg_match('`^https://`i', $url))
	{//pour les URLs en HTTPS
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
	}
	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 = 'https://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, il s'agit de 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 = 'https://exemple.com';
$page = file_get_contents($url);
echo '<pre>';
echo $page;
echo '</pre>';
?>
				

Le code ci-dessus va afficher le code source de l'URL renseignée dans la variable $url.

Comment faire fonctionner un script PHP ?

Il y a plusieurs façon d'exécuter ces scripts, il faut préalablement copier et coller le code que vous souhaitez exécuter dans un fichier possédant l'extension .php

Voici comment exécuter ces scripts php :

  • En local, sur votre ordinateur, en utilisant Wamp. Ce logiciel permet d'exécuter un script php en local sur votre ordinateur. Il existe également d'autres solutions du même type.
  • Mettre le fichier .php contenant le script PHP sur un serveur FTP, soit de votre site si vous en possédez un, soit en utilisant une solution d'hébergement gratuite

Pour utiliser, le script cURL, il est nécessaire que la librairie soit installée sur le serveur pour que cela fonctionne.

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

Certains sites bloquent également certains User-Agent, essayez de changer celui-ci en utilisant par exemple un User-Agent de Google Bot.

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 suivant vos besoins…

Bon scrap !