Crawler est un programme automatisé conçu pour collecter des informations sur Internet. Il simule le comportement du navigateur, accède aux pages Web et extrait les données cibles. En tant que puissant langage de script côté serveur, PHP peut également être utilisé pour rédiger des programmes de robottes efficaces.
La première étape pour Crawlers est d'obtenir le contenu de la page Web de destination via les demandes HTTP. PHP fournit une variété de méthodes pour envoyer des demandes HTTP, la fonction la plus simple et la plus couramment utilisée est la fonction file_get_contents () .
$url = "http://example.com";
$html = file_get_contents($url);
Utilisez la fonction file_get_contents () pour obtenir directement le code source HTML de la page Web et le stocker dans la variable $ html .
Après avoir obtenu le code source de la page Web, le HTML doit être analysé pour extraire les informations requises. La classe DomDocument intégrée de PHP est idéale pour gérer les documents XML et HTML.
$dom = new DOMDocument();
@$dom->loadHTML($html);
Ici, la méthode LoadHTML () est utilisée pour convertir la chaîne HTML en un objet DOM pour faciliter les opérations de données ultérieures. Faites attention à l'ajout de @ pour éviter les messages d'avertissement pendant l'analyse HTML.
XPath est un langage de requête utilisé pour localiser les nœuds dans des documents XML et HTML. Combiné avec la classe DOMXPATH , vous pouvez facilement localiser et extraire des éléments cibles dans une page Web.
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//h1");
foreach ($elements as $element) {
echo $element->nodeValue;
}
Le code ci-dessus est positionné par l'expression XPATH "// h1"
$url = "http://example.com";
$html = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//title");
if ($elements->length > 0) {
$title = $elements->item(0)->nodeValue;
echo $title;
} else {
echo "No title found";
}
Ce code demande d'abord le code source de la page Web, puis analyse le HTML et le localise enfin via XPATH