Maison  >  Article  >  développement back-end  >  Comment créer un robot d'exploration Web rapide et efficace avec PHP et Selenium

Comment créer un robot d'exploration Web rapide et efficace avec PHP et Selenium

WBOY
WBOYoriginal
2023-06-15 20:44:551380parcourir

Dans le vaste monde d'Internet, il existe une énorme quantité d'informations qui doivent être exploitées. C’est à cette époque que les robots d’exploration Web ont vu le jour. Cependant, la façon dont les robots sont écrits varie considérablement. Différentes combinaisons de langages et d'outils peuvent avoir des efficacités différentes et avoir des coûts d'apprentissage différents. Cet article explique comment utiliser PHP et Selenium pour créer un robot d'exploration Web rapide et efficace.

Qu'est-ce que Selenium

Selenium est un outil de test automatisé qui peut simuler des opérations humaines sur des pages Web. Il prend en charge plusieurs langages de programmation tels que Java, Python, C# et PHP, etc. La version actuelle est Selenium WebDriver. Par rapport à la version précédente, elle n'a pas besoin d'utiliser Selenium RC comme couche intermédiaire, mais communique directement avec le navigateur, ce qui a considérablement amélioré la vitesse et la stabilité.

Pourquoi choisir PHP et Selenium

Tout d'abord, PHP est un langage de programmation côté serveur populaire avec une bonne lisibilité et évolutivité. Deuxièmement, Selenium, en tant qu'outil de test automatisé, peut piloter divers navigateurs, simuler facilement des opérations humaines sur des pages Web et capturer les données finales souhaitées. Enfin, étant donné que la fonction curl utilisée dans le langage PHP peut être bloquée par le site Web, Selenium peut simuler le comportement réel du navigateur et n'est pas facilement bloquée.

Installer Selenium

Avant d'installer Selenium, vous devez d'abord installer Composer. Si vous n'avez pas installé Composer, veuillez vous référer à la documentation officielle pour l'installer.

Après avoir installé Composer, installez l'interface PHP de Selenium via Composer :

composer require facebook/webdriver

Écrivez le code du robot

Tout d'abord, nous devons présenter le client de Selenium WebDriver :

require_once 'vendor/autoload.php';
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

Ensuite, nous devons instancier un WebDriver et sélectionner celui pour démarrer Navigateur et chemin du pilote correspondant :

$driver = RemoteWebDriver::create(
    'http://localhost:9515',
    DesiredCapabilities::chrome()
);

Ici, nous choisissons de démarrer le navigateur Chrome. Nous devons télécharger ChromeDriver à l'avance et définir le chemin du pilote :

putenv('webdriver.chrome.driver=/usr/local/bin/chromedriver');

Ensuite, nous pouvons ouvrir une page Web et obtenir les données :

$driver->get("https://www.example.com");
$elements = $driver->findElements(WebDriverBy::cssSelector(".example-class"));
foreach ($elements as $element) {
    echo $element->getText() . "
";
}

. Le code ici ouvre une page example.com, puis recherche l'élément dont la classe est example-class et l'imprime.

Comment accélérer le robot d'exploration

Comparé à d'autres outils d'exploration, le robot d'exploration Selenium est plus lent, principalement parce que chaque opération nécessite le démarrage et la fermeture du navigateur. Afin d'accélérer le robot, nous pouvons mettre en cache l'instance WebDriver.

$host = 'http://localhost:9515';
$options = new ChromeOptions();
$options->addArguments(['--headless']);
$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = RemoteWebDriver::create($host, $caps);

function get_web_driver() {
    global $driver;
    $status = true;
    try {
        $driver->getTitle();
    } catch (Exception $e) {
        $status = false;
    }
    if (!$status) {
        $releaseWebDriver = function() use($driver){ $driver->close(); $driver->quit(); };
        register_shutdown_function($releaseWebDriver);
        $options = new ChromeOptions();
        $options->addArguments(['--headless']);
        $caps = DesiredCapabilities::chrome();
        $caps->setCapability(ChromeOptions::CAPABILITY, $options);
        $new_driver = RemoteWebDriver::create(
            'http://localhost:9515',
            $caps
        );
        $driver = $new_driver;
    }
    return $driver;
}

Le code ci-dessus est destiné au navigateur Chrome, configure le mode Headless et implémente le cache de l'objet WebDriver. Il utilise la fonction register_shutdown_function() pour déconnecter l'opération de l'objet WebDriver, évitant ainsi les démarrages fréquents du navigateur et améliorer l'efficacité de la chenille.

Conclusion

En général, l'utilisation de PHP combinée à Selenium pour écrire un robot d'exploration Web peut capturer rapidement et efficacement les données requises. Cependant, il convient de noter que l'utilisation de robots d'exploration Web doit toujours être conforme aux lois et réglementations en vigueur et ne doit pas enfreindre les réglementations des sites Web ni capturer des informations personnelles et d'autres données, sinon vous pourriez être confronté à des risques juridiques inutiles.

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