Maison  >  Article  >  développement back-end  >  PHP et Selenium : Comment récupérer les données de différentes pages Web ?

PHP et Selenium : Comment récupérer les données de différentes pages Web ?

PHPz
PHPzoriginal
2023-06-16 10:01:401016parcourir

Avec le développement d'Internet, les robots d'exploration sont sans aucun doute devenus un moyen important d'obtenir des informations. Lorsque nous sommes confrontés à plusieurs sites Web différents et que nous devons collecter certaines informations, nous devons nous concentrer sur l’étude de la structure des pages de chaque site Web. Existe-t-il donc une méthode générale pour explorer les données sur différents sites Web ? La réponse est oui, cet article explique comment utiliser PHP et Selenium pour explorer les données sur différentes pages Web.

Qu'est-ce que le sélénium ?

Selenium peut être considéré comme l'une des normes de la communauté des tests d'automatisation Web. Il peut simuler les opérations des utilisateurs dans le navigateur, y compris la saisie, les clics, la sélection dans la liste déroulante, le téléchargement de fichiers, etc. Nous pouvons utiliser Selenium pour mettre en œuvre des tests automatisés de pages Web, mais ici, nous utiliserons Selenium pour explorer les données.

Pourquoi utiliser Sélénium ?

Lors de la récupération de données, nous rencontrons souvent des pages accessibles via de simples requêtes curl ou file_get_contents. Cependant, avec le développement de la technologie Web, de nombreux sites Web ont adopté des frameworks frontaux tels qu'Ajax, Vue et React, et les données de la page sont obtenues de manière asynchrone via JavaScript. Dans ce cas, il faut simuler le fonctionnement du navigateur pour obtenir le résultat complet du rendu de la page. De plus, afin d'empêcher les robots d'exploration, certains sites Web utiliseront des codes de vérification et d'autres moyens de vérification. À l'heure actuelle, nous devons également utiliser Selenium pour simuler des opérations manuelles avant de pouvoir continuer à capturer des données.

Processus de base d'utilisation de PHP et Selenium pour capturer des données

La première étape consiste à installer Selenium

L'installation de Selenium est très simple, utilisez simplement Composer dans le terminal pour exécuter la commande suivante :

composer require php-webdriver/webdriver

Une fois l'installation terminée, nous avons besoin de télécharger le pilote pour le navigateur correspondant. En prenant Chrome comme exemple, vous devez télécharger chromedriver et placer le pilote téléchargé à l'emplacement indiqué par la variable PATH.

Deuxième étape, démarrez Selenium

Démarrer Selenium est très simple, il suffit de saisir la commande suivante dans le terminal :

java -jar path/to/selenium-server-standalone-3.141.59.jar

Où, path/to/ est le chemin d'installation de Selenium.

La troisième étape consiste à utiliser Selenium pour implémenter la capture de données

Avec Selenium et le pilote du navigateur, nous pouvons directement utiliser PHP pour appeler l'API de Selenium afin de mettre en œuvre des tests automatisés de sites Web et la capture de données. Prenons comme exemple l'exploration des informations sur les films TOP250 de Douban Movies :

  1. Ouvrez le navigateur et entrez l'URL
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;

$host = 'http://localhost:4444/wd/hub'; // Selenium本地服务地址
$capabilities = DesiredCapabilities::chrome();
$webDriver = RemoteWebDriver::create($host, $capabilities);

$url = 'https://movie.douban.com/top250';
$webDriver->get($url);
  1. Cliquez sur la page suivante pour continuer à obtenir des informations sur le film
do {
    // 获取电影列表并输出
    $list = $webDriver->findElements(WebDriverBy::cssSelector('.grid_view .item'));
    foreach ($list as $item) {
        $name = $item->findElement(WebDriverBy::cssSelector('.title'))->getText();
        $directors = $item->findElement(WebDriverBy::cssSelector('.bd p:first-child'))->getText();
        $rate = $item->findElement(WebDriverBy::cssSelector('.rating_num'))->getText();
        echo "$name $directors $rate
";
    }

    // 点击下一页
    $nextPageBtn = $webDriver->findElement(WebDriverBy::cssSelector('.paginator .next a'));
    $nextPageBtnClassName = $nextPageBtn->getAttribute('class');
    if (strpos($nextPageBtnClassName, 'disabled') === false) {
        $nextPageBtn->click();
    } else {
        break;
    }

    // 等待新页面加载完成
    $webDriver->wait()->until(WebDriverExpectedCondition::urlContains(intval($page + 1)));
} while (true);
  1. Fermez le navigateur
$webDriver->quit();

Avec le code ci-dessus, nous pouvons facilement obtenir des informations pertinentes sur les films TOP250 Douban.

Résumé

Cet article explique comment utiliser PHP et Selenium pour explorer les données sur différents sites Web et explique en détail les étapes de mise en œuvre spécifiques avec des exemples. L'utilisation de Selenium nous permet d'obtenir des données plus facilement et d'obtenir les informations requises plus rapidement, ce qui est très utile pour certaines tâches d'exploration qui nécessitent une personnalisation élevée.

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