web scraping php avec proxy
5/5 - (1 vote)

Aujourd’hui, on scrap en PHP avec l’api ScrapingBee !

Salut à toi ! Aujourd’hui, je te propose de repartir au cœur du web scraping mais cette fois, avec PHP, avec un petit twist : l’utilisation d’un proxy.

Pourquoi ? Parce que dans la jungle des données, être discret c’est la clé. Et pour cet exploit, on va s’appuyer sur un outil de pro que j’affectionne tout particulièrement :  ScrapingBee !

 

Pourquoi utiliser un proxy pour le web scraping ?

Parce que ça permet de récupérer des données sur le web, mais sans te faire repérer. Il agit comme un caméléon, te permettant de changer d’adresse IP et de naviguer incognito.

Et pourquoi ScrapingBee ? Parce qu’il te facilite la tâche en gérant les proxies, les headers et même les JavaScripts lourds. Cherche pas plus loin, c’est le meilleur outils et je l’utilise partout ! En plus avec la version gratuite, tu as de quoi faire tes tests tranquille sans trop te soucier du quota.

 

Ce dont tu as besoin pour scraper les données avec PHP

Alors, comment ça marche ? Voici un exemple de code en PHP qui utilise ScrapingBee pour récupérer le contenu d’une page web à travers un proxy.

 

Les ingrédients du succès

  1. Un compte ScrapingBee (ils ont un plan gratuit pour commencer).
  2. PHP installé sur ton système.
  3. La motivation d’un chef prêt à concocter un plat étoilé.

 

Le code du scraper

<?php
// Ingrédients
$api_key = 'TA_CLE_API_ICI';
$url = 'https://le-site-que-tu-veux-scrap.com';
$proxy = 'ton_proxy:port';

// Préparation de la requête
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://app.scrapingbee.com/api/v1/?api_key=$api_key&url=" . urlencode($url) . "&proxy=$proxy");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Cuisson
$response = curl_exec($ch);
curl_close($ch);

// Dégustation
if ($response) {
    echo "Voilà ce que j'ai trouvé : " . PHP_EOL . $response;
} else {
    echo "Mince, quelque chose s'est mal passé!";
}
?>

 

Explication du code

  1. Ingrédients : Tu déclares ta clé API ScrapingBee et l’URL cible. N’oublie pas de remplacer 'TA_CLE_API_ICI' par ta vraie clé API ScrapingBee.
  2. Préparation de la requête : Tu utilises cURL, un outil puissant en PHP pour faire des requêtes HTTP. Tu construis l’URL de requête en y ajoutant ta clé API, l’URL cible et les détails du proxy.
  3. Cuisson : Tu exécutes la requête avec curl_exec et tu fermes la session cURL avec curl_close.
  4. Dégustation : Si tout se passe bien, tu affiches le contenu récupéré. Sinon, tu gères l’erreur.

 

Exemple concret d’utilisation de proxy pour scraper un site web

Pour cet exemple concret, on va scraper un site qui est conçu pour ça, HTTPBin ! Ce qui est chouette avec HTTPBin, c’est qu’il te permet de voir comment tes requêtes sont reçues par un serveur. En gros, c’est un miroir qui te renvoie les données que tu lui envoies, parfait pour nos tests.

Dans l’exercice qui suit, on va utiliser HTTPBin pour récupérer deux bouts d’info assez sympas, notre User-Agent et notre adresse IP.

<?php
// Les bons ingrédients
$api_key = 'TA_CLE_API_ICI'; // N'oublie pas de remplacer par ta véritable clé API ScrapingBee
$userAgentUrl = 'http://httpbin.org/user-agent'; // Pour l'entrée : l'User-Agent
$ipUrl = 'http://httpbin.org/ip'; // Pour le plat principal : l'IP

// Préparation de notre User-Agent
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://app.scrapingbee.com/api/v1/?api_key=$api_key&url=" . urlencode($userAgentUrl));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$userAgentResponse = curl_exec($ch);
curl_close($ch);

// Préparation pour notre IP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://app.scrapingbee.com/api/v1/?api_key=$api_key&url=" . urlencode($ipUrl));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ipResponse = curl_exec($ch);
curl_close($ch);

// La présentation du plat
if ($userAgentResponse && $ipResponse) {
    echo "Voici ton User-Agent selon HTTPBin : " . PHP_EOL . $userAgentResponse . PHP_EOL;
    echo "Et voici ton adresse IP selon HTTPBin : " . PHP_EOL . $ipResponse;
} else {
    echo "Oups, notre recette a rencontré un petit souci...";
}
?>

 

Résultat de la requête :

Voici ton User-Agent selon HTTPBin : { "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } Et voici ton adresse IP selon HTTPBin : { "origin": "209.99.129.135" }

 

On décortique tout ça

  1. Le procédé : On démarre avec nos URLs cibles chez HTTPBin, une pour l’User-Agent, une pour l’IP.
  2. Préparation de notre User-Agent : On prépare notre première requête cURL pour récupérer l’User-Agent. On utilise l’endpoint /user-agent de HTTPBin via ScrapingBee.
  3. Préparation pour notre IP : Juste après avoir récupéré l’User-Agent, on lance une nouvelle requête cURL pour récupérer l’adresse IP avec l’endpoint /ip de HTTPBin, toujours via ScrapingBee.
  4. La présentation du plat : Si tout s’est bien passé, on affiche le User-Agent et l’adresse IP récupérés. Sinon, on signale un souci.

 

Les meilleurs outils de web scraping

Voici une sélection d’alternatives qui vont illuminer tes projets de scraping :

  • Octoparse : Un outil tellement user-friendly que même ta grand-mère pourrait l’utiliser pour scraper des sites. C’est Octoparse. Pas besoin de coder, juste du point-and-click et hop, les données sont à toi.
  • ParseHub : Si tu veux dompter les sites web les plus sauvages, ceux qui jonglent avec JavaScript, les redirections et les cookies comme des acrobates, ParseHub est parfait.
  • Scrapy : Pour les codeurs dans l’âme, Scrapy n’est pas qu’un outil, c’est un univers. Ce framework open-source te laisse construire tes propres spiders en Python.
  • Beautiful Soup : Quand tu veux juste extraire des données sans te prendre la tête, oriente toi vers Beautiful Soup.
  • Apify : Avec Apify, tu transformes les sites web en API comme par magie. Automatisation, intégration de données, le tout dans une seule plateforme.
  • WebHarvy : Pour ceux qui préfèrent voir pour croire, WebHarvy te permet de récupérer textes, images, URLs et emails directement depuis ton écran. C’est du scraping avec des yeux de lynx.
  • Diffbot : Si tu cherches à entrer dans la cour des grands, Diffbot utilise l’IA pour digérer des pages web et cracher des données structurées. C’est un peu comme avoir un super-ordinateur dans ton équipe de scraping.

 

L’éthique du web scraping, c’est pas pour les robots

Dans l’excitation de la collecte des données, on oublie parfois que derrière chaque site web, il y a des humains. Des vrais, avec des émotions et des règles. Alors, avant de lancer ton script de scraping, pose-toi la question :

est-ce que j’ai le droit de faire ça ?

Voici quelques conseils pour rester dans les clous :

  • Contrôle le fichier robots.txt : C’est la ou se trouve les règles de restrictions d’accès d’un site. Donc si un répertoire est interdit, tu ne dois pas le parcourir.
  • Ne sois pas gourmand : Ne les surcharge pas de requêtes, cela pourrait nuire au site et à l’expérience des visiteurs. De plus, en cas de dysfonctionnements, tu peux évidemment être poursuivi.

En respectant ces quelques règles, tu t’assures que tes activités de scraping restent non seulement productives mais aussi respectueuses. Après tout, on est tous là pour partager le gâteau de l’information, pas pour le voler !