今日のデジタル時代では、インターネット上のデータをクローリングすることが一般的な需要になっています。大規模なデータ収集と分析には、自動クローラーの使用が非常に必要です。 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 サイトの他の関連記事を参照してください。