Le programme Web Crawler fait référence à un programme qui obtient et analyse automatiquement des informations sur Internet. C'est également l'un des outils importants pour la collecte de données et le traitement de l'information. À l’ère d’Internet, les données constituent un atout extrêmement précieux, et pouvoir obtenir rapidement et précisément des informations sur des sites Web cibles est très important tant pour les entreprises que pour les particuliers. L’utilisation de robots d’exploration Web peut atteindre cet objectif plus efficacement.
PHP est un langage de programmation efficace. Ses excellentes fonctionnalités de programmation réseau et ses riches bibliothèques open source en font un langage très approprié pour développer des programmes de robots d'exploration Web. Cet article présentera en détail comment utiliser PHP pour développer un programme de robot d'exploration Web efficace.
1. Principes de base des programmes d'exploration de sites Web
Le principe de fonctionnement de base des programmes d'exploration de sites Web est d'obtenir le code source des pages Web via des protocoles réseau, puis d'analyser les informations en fonction règles spécifiques, et enfin stocker les données requises dans une base de données ou un autre fichier. Le processus général est le suivant :
1. Envoyez une requête à l'URL cible et obtenez le code source de la page Web
2. Analysez les informations contenues dans le code source, telles que les liens, le texte. , images, etc.
3. Stockez les informations requises dans la base de données ou dans d'autres fichiers
4. Répétez les étapes ci-dessus jusqu'à ce que la tâche d'exploration soit terminée
La partie principale du Le programme d'exploration est l'analyseur, dont la tâche est d'analyser le code source des pages Web obtenues pour extraire les informations requises. L'analyse du code source des pages Web est généralement implémentée à l'aide d'expressions régulières ou de fonctions d'analyse fournies par le framework. Les expressions régulières sont plus flexibles à utiliser, mais sont complexes et sujettes aux erreurs ; l'utilisation des fonctions d'analyse fournies par le framework est facile à utiliser, mais présente également des limites.
2. Développement pratique d'un programme de robot d'exploration Web
Cet article prend comme exemple le développement d'un programme de robot d'exploration Web simple pour présenter son processus de développement.
Avant de développer un programme de robot d'exploration de sites Web, vous devez d'abord clarifier le site Web cible à explorer et les informations nécessaires être rampé. Cet article prend comme exemple l’exploration des recommandations populaires de Sina News. L'exigence est la suivante : explorez les titres et les liens recommandés par les actualités populaires sur la page d'accueil de Sina News et stockez-les dans la base de données.
En PHP, vous pouvez utiliser la bibliothèque de fonctions curl pour obtenir le code source de la page Web. Le code suivant montre comment utiliser la bibliothèque de fonctions curl pour obtenir le code source de la page Web de la page d'accueil de Sina News.
<?php $url = 'http://news.sina.com.cn/'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); echo $html; ?>
Le code ci-dessus utilise la bibliothèque de fonctions curl pour envoyer une requête à la page d'accueil de Sina News et obtenir le code source de sa page Web. La fonction curl_setopt() définit le résultat renvoyé sous forme de chaîne après avoir obtenu la page et définit automatiquement le référent de la page Web demandée.
Après avoir obtenu le code source de la page Web, vous devez analyser les informations qu'elle contient pour extraire les données requises. En PHP, cela peut être réalisé en utilisant des expressions régulières ou des fonctions d'analyse fournies par le framework. Le code ci-dessous montre comment extraire des titres d'actualité et des liens à l'aide de la classe DOMDocument intégrée de PHP.
<?php $url = 'http://news.sina.com.cn/'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); // 使用 DOMDocument 类解析 HTML $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $news_list = $xpath->query('//div[@class="blk12"]/h2/a'); foreach ($news_list as $news) { $title = trim($news->nodeValue); $link = $news->getAttribute('href'); echo $title . ' ' . $link . PHP_EOL; } ?>
Dans le code ci-dessus, //div[@class="blk12"]/h2/a est une expression XPath, utilisée pour sélectionner tous les éléments h2 sous l'élément div avec l'attribut de classe "blk12 " L'élément a ci-dessous. Le programme utilise une boucle foreach pour parcourir tous les éléments a obtenus et exploite les méthodes nodeValue et getAttribute() de DOMNode pour obtenir leurs valeurs d'attribut texte et href.
Après avoir obtenu les informations explorées, elles doivent être stockées dans la base de données. Cet article utilise la base de données MySQL comme exemple. Le code ci-dessous montre comment stocker les titres d'actualités et les liens récupérés dans une base de données MySQL.
<?php // 连接数据库 $host = 'localhost'; $user = 'root'; $password = 'root'; $database = 'test'; $charset = 'utf8mb4'; $dsn = "mysql:host={$host};dbname={$database};charset={$charset}"; $pdo = new PDO($dsn, $user, $password); // 获取新浪新闻主页热门推荐新闻标题和链接 $url = 'http://news.sina.com.cn/'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); // 使用 DOMDocument 类解析 HTML $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $news_list = $xpath->query('//div[@class="blk12"]/h2/a'); // 插入数据库 $sql = "INSERT INTO news(title, link) VALUES(:title, :link)"; $stmt = $pdo->prepare($sql); foreach ($news_list as $news) { $title = trim($news->nodeValue); $link = $news->getAttribute('href'); $stmt->bindParam(':title', $title); $stmt->bindParam(':link', $link); $stmt->execute(); } ?>
Dans le code ci-dessus, PDO est utilisé pour se connecter à la base de données MySQL, et une table de données nommée news est définie pour stocker les titres et les liens des actualités. Le programme utilise la fonction prepare() et la fonction bindParam() de PDO pour éviter les attaques par injection SQL et les erreurs de type de données.
En combinant les codes ci-dessus ensemble, vous pouvez obtenir un programme de robot d'exploration Web simple. Le code complet est le suivant : # 🎜🎜 #
<?php // 连接数据库 $host = 'localhost'; $user = 'root'; $password = 'root'; $database = 'test'; $charset = 'utf8mb4'; $dsn = "mysql:host={$host};dbname={$database};charset={$charset}"; $pdo = new PDO($dsn, $user, $password); // 获取新浪新闻主页热门推荐新闻标题和链接 $url = 'http://news.sina.com.cn/'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $html = curl_exec($ch); curl_close($ch); // 使用 DOMDocument 类解析 HTML $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $news_list = $xpath->query('//div[@class="blk12"]/h2/a'); // 插入数据库 $sql = "INSERT INTO news(title, link) VALUES(:title, :link)"; $stmt = $pdo->prepare($sql); foreach ($news_list as $news) { $title = trim($news->nodeValue); $link = $news->getAttribute('href'); $stmt->bindParam(':title', $title); $stmt->bindParam(':link', $link); $stmt->execute(); } ?>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!