ホームページ  >  記事  >  バックエンド開発  >  PHP と Selenium を使用して効率的な Web クローラーを構築する

PHP と Selenium を使用して効率的な Web クローラーを構築する

王林
王林オリジナル
2023-06-15 12:30:55902ブラウズ

情報化時代の到来により、Web サイトは情報を入手する主な方法の 1 つであると考えられています。ただし、Web サイト上の情報を手動で取得するのは非常に面倒なので、Web ページを自動的にクロールする方法、つまり Web クローラーが存在します。この記事では、PHP と Selenium を使用して、情報を自動的に収集する効率的な Web クローラーを構築する方法を紹介します。

まず、PHP と Selenium をインストールする必要があります。 Selenium は、Web ページ上でのユーザー操作をシミュレートする Web 自動テスト ツールです。 Selenium は、PHP を含む複数の言語と対話できます。インストール方法については公式ドキュメントを参照してください。

次のステップは、Selenium を PHP に統合することです。まず、PHP 用の Selenium ライブラリをインストールします。 Composer を通じてインストールできます:

composer require facebook/webdriver

インストール後、Web ドライバーを定義する必要があります。ここでは Chrome ブラウザを使用していますが、Selenium は複数のブラウザをサポートしています。次のコードを別のファイルとして保存できます:

use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;

require_once('vendor/autoload.php');

$host = 'http://localhost:4444/wd/hub';

$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability('goog:chromeOptions', ['args' => ['--headless']]);

$driver = RemoteWebDriver::create($host, $capabilities);

コード分析:

  • 必要なクラスとファイルの紹介
  • はドライバーのアドレスとアドレスを定義しますChrome ブラウザのオプション
  • RemoteWebDriver クラスを介してドライバーへの接続を作成します

ドライバーに接続したら、ユーザー アクションのシミュレーションを開始できます。たとえば、Web サイトにアクセスします:

$driver->get('http://news.baidu.com');

これにより、Baidu ニュースが開き、すべてのニュース リンクが取得されます:

$news_links = $driver->findElements(WebDriverBy::cssSelector('.c-title a'));
$links = [];
foreach ($news_links as $news_link) {
    $links[] = $news_link->getAttribute('href');
}

コード分析:

  • Use WebDriverBy: :cssSelectorCSS セレクター メソッドを介してすべてのニュース リンクを取得します
  • 各リンクをトラバースして、各リンクの URL を取得します

これで、すべてのニュース リンクが取得されました。これらをトラバースできます。各リンクのコンテンツを順番にクロールします。

foreach ($links as $link) {
    $driver->get($link);
    $news_title = $driver->findElement(WebDriverBy::cssSelector('.article-title'))->getText();
    $news_content = $driver->findElement(WebDriverBy::cssSelector('.article-content'))->getText();
    // 保存新闻标题和内容至数据库
}

コード分析:

  • WebDriverBy::cssSelector を通じて指定された要素を見つけ、テキスト コンテンツを取得します。要素の
  • ニュース タイトルとコンテンツをデータベースに保存します

上記は、PHP と Selenium を使用して効率的な Web クローラーを構築するための基礎です。もちろん、さらなる最適化が必要な場合は、マルチスレッドを使用して効率を向上させたり、フォント難読化防止機能を使用して一部の Web サイトでフォントの難読化を解除する問題を解決したりするなど、複数のツールやテクノロジーと組み合わせて使用​​できます。クローラーの世界は奇妙なことに満ちています。自分に最適な方法やツールを見つけていただければ幸いです。

以上がPHP と Selenium を使用して効率的な Web クローラーを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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