Développement et implémentation de robots : stratégie pratique PHP et Selenium

PHPz
Libérer: 2023-06-16 08:48:01
original
1513 Les gens l'ont consulté

Avec le développement continu d'Internet, de plus en plus de données doivent être obtenues à partir de pages Web. Contrairement à la navigation manuelle des pages Web pour lire des informations, la technologie des robots d'exploration peut obtenir automatiquement des données. Dans la technologie des robots d'exploration, Selenium est un outil de test automatisé qui peut simuler des utilisateurs opérant sur des pages Web et obtenir des données sur des pages Web. Cet article explique comment utiliser PHP et Selenium pour implémenter les fonctions du robot.

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

Selenium est un outil de test automatisé qui peut simuler toutes les opérations utilisateur sur une page Web, telles que la saisie, le clic, le défilement, etc., et peut également obtenir des données sur la page Web. Selenium peut prendre en charge plusieurs navigateurs, tels que Chrome, Firefox, Edge, etc., et peut utiliser différents langages pour écrire des scripts de test. Dans la technologie des robots d'exploration, Selenium peut simuler les utilisateurs exploitant des pages Web et explorer les données des pages Web.

Préparation avant le développement du robot

Avant d'utiliser Selenium pour le développement du robot, vous devez installer un pilote de navigateur prenant en charge Selenium, tel que le pilote de navigateur de Chrome. Vous pouvez télécharger la dernière version du pilote Chrome sur le site officiel de Selenium et l'installer.

Ensuite, vous devez installer PHP et les extensions associées localement, telles que php-webdriver. Il peut être installé à l'aide de Composer, comme indiqué ci-dessous :

composer require php-webdriver/webdriver
Copier après la connexion

Exemple simple : obtenir le titre de la page Web

La première étape de l'utilisation de Selenium pour le développement de robots consiste à ouvrir la page Web qui doit analyser les données. Supposons que nous ayons besoin d'obtenir le titre d'une page Web, nous pouvons suivre les étapes suivantes :

<?php
require_once 'vendor/autoload.php';

use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;

// 启动Chrome浏览器
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create('http://localhost:9515', $capabilities);

// 打开需要抓取数据的网页
$driver->get('https://www.example.com');

// 获取网页标题
$title = $driver->getTitle();
echo $title;

// 关闭浏览器
$driver->quit();
Copier après la connexion

Analyse du code :

  1. Tout d'abord, utilisez require_once pour introduire les fichiers de bibliothèque de classes requis. require_once引入需要的类库文件。
  2. 使用DesiredCapabilities创建浏览器驱动程序,指定使用Chrome浏览器。
  3. 使用RemoteWebDriver::create启动一个Chrome浏览器并连接到Selenium服务器。
  4. 使用get方法打开需要抓取数据的网页。
  5. 使用getTitle方法获取网页标题。
  6. 输出网页标题。
  7. 最后使用quit方法关闭Chrome浏览器。

简单示例:登录网页并抓取数据

在实际爬虫开发中,我们可能需要在网页中进行登录,才能获取到需要的数据。以下为登录某网站并抓取数据的示例代码:

<?php
require_once 'vendor/autoload.php';

use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

// 启动Chrome浏览器
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create('http://localhost:9515', $capabilities);

// 打开登录页面
$driver->get('https://www.example.com/login');

// 输入账号密码并登录
$accountInput = $driver->findElement(WebDriverBy::id('account'));
$passwordInput = $driver->findElement(WebDriverBy::id('password'));
$submitButton = $driver->findElement(WebDriverBy::id('submit'));
$accountInput->sendKeys('your_username');
$passwordInput->sendKeys('your_password');
$submitButton->click();

// 等待登录成功并打开需要抓取数据的页面
$driver->wait(10)->until(
    WebDriverExpectedCondition::titleContains('Homepage')
);
$driver->get('https://www.example.com/data');

// 获取数据
$data = $driver->findElement(WebDriverBy::cssSelector('.data'))->getText();
echo $data;

// 关闭浏览器
$driver->quit();
Copier après la connexion

代码解析:

  1. 首先,使用require_once引入需要的类库文件。
  2. 使用DesiredCapabilities创建浏览器驱动程序,指定使用Chrome浏览器。
  3. 使用RemoteWebDriver::create启动一个Chrome浏览器并连接到Selenium服务器。
  4. 使用get方法打开需要登录的页面。
  5. 使用findElement方法通过账号和密码的input元素的id获取对应的WebElement对象,并分别调用sendKeys方法传入账号密码进行输入。
  6. 使用findElement方法通过提交按钮的id获取对应的WebElement对象,并调用click方法进行点击,完成登录操作。
  7. 使用wait方法等待页面跳转后的标题包含Homepage
  8. 使用get方法打开需要抓取数据的页面。
  9. 使用findElement方法通过CSS选择器获取对应的WebElement对象,并使用getText方法获取文本内容。
  10. 输出获取的数据。
  11. 最后使用quit
  12. Utilisez DesiredCapabilities pour créer un pilote de navigateur et spécifier le navigateur Chrome.

Utilisez RemoteWebDriver::create pour lancer un navigateur Chrome et vous connecter au serveur Selenium.

Utilisez la méthode get pour ouvrir la page Web qui doit capturer les données.

Utilisez la méthode getTitle pour obtenir le titre de la page Web.

🎜Affichez le titre de la page Web. 🎜🎜Enfin, utilisez la méthode quit pour fermer le navigateur Chrome. 🎜🎜🎜Exemple simple : connectez-vous à la page Web et explorez les données🎜🎜Dans le développement réel d'un robot d'exploration, nous devrons peut-être nous connecter à la page Web pour obtenir les données requises. Ce qui suit est un exemple de code pour se connecter à un site Web et récupérer des données : 🎜rrreee🎜Analyse du code : 🎜🎜🎜Tout d'abord, utilisez require_once pour introduire les fichiers de bibliothèque de classes requis. 🎜🎜Utilisez DesiredCapabilities pour créer un pilote de navigateur et spécifier le navigateur Chrome. 🎜🎜Utilisez RemoteWebDriver::create pour lancer un navigateur Chrome et vous connecter au serveur Selenium. 🎜🎜Utilisez la méthode get pour ouvrir la page qui nécessite une connexion. 🎜🎜Utilisez la méthode findElement pour obtenir l'objet WebElement correspondant via l'identifiant de l'élément d'entrée du compte et le mot de passe, et appelez la méthode sendKeys pour transmettre le mot de passe du compte pour la saisie. 🎜🎜Utilisez la méthode findElement pour obtenir l'objet WebElement correspondant via l'identifiant du bouton de soumission, et appelez la méthode click pour cliquer pour terminer l'opération de connexion. 🎜🎜Utilisez la méthode wait pour attendre que le titre après le saut de page contienne Homepage. 🎜🎜Utilisez la méthode get pour ouvrir la page où les données doivent être capturées. 🎜🎜Utilisez la méthode findElement pour obtenir l'objet WebElement correspondant via le sélecteur CSS, et utilisez la méthode getText pour obtenir le contenu du texte. 🎜🎜Sortez les données acquises. 🎜🎜Enfin, utilisez la méthode quit pour fermer le navigateur Chrome. 🎜🎜🎜Ce qui précède est un exemple de code. En développement réel, il doit être modifié en fonction de la structure de la page et de l'ID d'élément du site Web spécifique. 🎜🎜Résumé🎜🎜Cet article présente comment utiliser PHP et Selenium pour le développement de robots d'exploration et fournit des exemples de démonstrations sous deux aspects : l'obtention des titres de pages Web et la connexion pour explorer les données. En tant qu'outil de test automatisé, Selenium peut simuler les opérations des utilisateurs sur les pages Web, faciliter la capture de données dans les pages Web et peut également être utilisé dans d'autres scénarios de tests automatisés. En maîtrisant l'utilisation du Sélénium, vous pouvez améliorer votre niveau technique et votre efficacité au travail. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal