ホームページ >バックエンド開発 >PHPチュートリアル >自動クローラーの必須スキル: PHP と Selenium の使用の概要

自動クローラーの必須スキル: PHP と Selenium の使用の概要

王林
王林オリジナル
2023-06-15 22:52:432052ブラウズ

今日のデジタル時代では、インターネット上のデータをクローリングすることが一般的な需要になっています。大規模なデータ収集と分析には、自動クローラーの使用が非常に必要です。 Selenium は Web テストと自動化に広く使用されているツールであり、PHP は人気のある Web プログラミング言語です。この記事では、PHP と Selenium を使用して自動クローラーを実装し、必要なデータをクロールする方法を紹介します。

1. Selenium と WebDriver のインストール

Selenium を使用する前に、Selenium をダウンロードする必要があります。これは次の方法でインストールできます。

composer require php-webdriver/webdriver

この方法で、Web ドライバーを正常にダウンロードし、コードで使用できます。次に、プログラムが呼び出せるように、Chrome WebドライバーなどのブラウザーのWebドライバーをインストールする必要があります。対応するバージョンの Webdriver は Chrome 公式 Web サイトからダウンロードできます。

2. Selenium の基本的な使い方

Selenium と Webdriver をインストールすると、ブラウザを自動で動作させることができます。以下は簡単なコード例です。

use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

$driver = RemoteWebDriver::create('http://localhost:9515', DesiredCapabilities::chrome());
$driver->get('http://www.google.com');
$element = $driver->findElement(WebDriverBy::name('q'));
$element->sendKeys('Selenium');
$element->submit();
echo $driver->getTitle();

このコード スニペットは、まずリモート Webdriver オブジェクトを作成し、ローカル Chrome ブラウザに接続します。次に、Google を開き、「Selenium」と入力して検索を実行します。最後にブラウザのページタイトルを出力します。

3. クロールに Selenium を使用する

Selenium の基本的な知識があれば、Selenium を使用して自動クローラーを構築できます。以下は、指定された Web ページ内のすべてのリンクをクロールできる簡単なコード例です:

use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

$driver = RemoteWebDriver::create('http://localhost:9515', DesiredCapabilities::chrome());
$driver->get('https://www.example.com');

$links = $driver->findElements(WebDriverBy::tagName('a'));

foreach ($links as $link) {
    $url = $link->getAttribute('href');
    echo $url . "

";

}

このコード スニペットは、Selenium を使用して Web サイトにアクセスし、Web サイト内のすべてのリンクを取得します。各リンクをたどって getAttribute('href') 関数を呼び出すことで、href 属性の値を取得し、最後に見つかったすべてのリンクを出力します。

4. PHP を使用した自動クローラの実装

上記のコード例は、PHP で実装された Selenium コードを使用しています。Selenium と PHP を組み合わせることで、完全な自動クローラーを実装できます。以下は、ページング テクノロジを使用して Baidu の検索結果をクロールするサンプル コードです。最初の 10 ページ:

use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

$driver = RemoteWebDriver::create('http://localhost:9515', DesiredCapabilities::chrome());
$driver->get('https://www.baidu.com/s?wd=php');

$pageNumber = 10;

for ($i = 1; $i <= $pageNumber; $i++) {
     echo "page {$i}

";

     $links = $driver->findElements(WebDriverBy::xpath('//div[@class="result c-container "]//h3[@class="t"]/a'));

     foreach ($links as $link) {
         $url = $link->getAttribute('href');
         echo $url . "

";

     }

     $nextPageElement = $driver->findElement(WebDriverBy::xpath('//a[@class="n" and contains(text(),"下一页>")]'));

     $driver->executeScript("arguments[0].scrollIntoView();", [$nextPageElement]);

     $nextPageElement->click();
 }

上記のコード スニペットは、まず Baidu の検索結果ページを開き、次に各ページのすべての検索を横断します。その結果、次のリンク アドレスが各検索結果が出力されます。ページを移動した後、ページの一番下までスクロールし、次のページのボタンをクリックして、さらにリンクのクロールを続けます。

概要

Selenium と自動クローラを構築するための PHP は非常に効果的な方法です。Selenium は自動クローラの構築に必要な多くのコア機能を提供しますが、PHP は自動クローラを実現するための高速、簡単、便利な方法を Selenium に提供します。これらのスキルを習得することで、より効果的に活用できます。必要なデータを迅速かつ効率的に収集する自動クローラー。

以上が自動クローラーの必須スキル: PHP と Selenium の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。