Maison  >  Article  >  développement back-end  >  PHP en pratique : développement efficace d'un programme de robots d'exploration de sites Web

PHP en pratique : développement efficace d'un programme de robots d'exploration de sites Web

WBOY
WBOYoriginal
2023-06-13 20:19:381385parcourir

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.

  1. Déterminer les besoins

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.

  1. Obtenir le code source de la page Web

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.

  1. Analyser les informations

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.

  1. Stockage des données

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.

  1. Code complet

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();
}

?>

3. Résumé

Le développement de programmes de robots d'exploration Web nécessite l'utilisation de plusieurs technologies, notamment la programmation réseau, l'analyse d'informations, le stockage de données, etc. En tant que langage de programmation efficace, PHP présente des avantages exceptionnels dans la programmation réseau, et ses riches bibliothèques de classes open source en font un langage très approprié pour développer des programmes de robots d'exploration Web.

Dans le développement réel, les programmes de robots d'exploration Web doivent prêter attention à des problèmes tels que la conformité légale, la confidentialité des données et les mécanismes anti-crawler. Les développeurs doivent mener des développements pertinents dans le respect de la loi. Dans le même temps, des paramètres raisonnables tels que la vitesse de requête du programme, les en-têtes de requête HTTP aléatoires et l'utilisation d'une adresse IP proxy peuvent efficacement éviter le blocage par le mécanisme anti-crawler.

Pour développer un programme de robot d'exploration Web, vous devez pleinement prendre en compte ses besoins réels et sa faisabilité, et choisir les technologies et stratégies appropriées. L'exemple de code fourni dans cet article n'est qu'une simple implémentation. Si vous avez besoin d'un programme d'exploration plus complet, vous devez approfondir les connaissances pertinentes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn