ホームページ  >  記事  >  バックエンド開発  >  自動 Web クローラーの実践的なガイド: PHP と Selenium を使用した Web クローラーの構築

自動 Web クローラーの実践的なガイド: PHP と Selenium を使用した Web クローラーの構築

WBOY
WBOYオリジナル
2023-06-15 16:44:571522ブラウズ

Web クローラーは、今日のインターネットの世界で最も重要なツールの 1 つとなっており、インターネット上のさまざまな Web サイトを自動的に閲覧し、人々が必要とする有用な情報を抽出できます。自動 Web クローラーのコア技術は、プログラミング言語とさまざまなツールを使用して、データを自動的に処理できるプログラムを構築することです。

近年、Selenium は自動 Web クローラーの分野で最も人気のあるツールの 1 つになりました。これは、クリック、スクロール、入力など、ユーザーがブラウザーで実行するさまざまな操作をシミュレートできるクロスブラウザー自動テスト ツールであり、Web ページからデータを取得することもできます。これにより、Selenium はプログラムが通常のユーザーと同じ方法でデータを取得できるため、自動 Web クローラーの構築に最適です。

この記事では、PHP と Selenium を使用して自動 Web クローラーを構築する方法を紹介します。この記事で紹介するクローラープログラムは、指定したWebサイトを自動的に閲覧し、すべての記事のタイトル、著者、公開日、記事リンクなどの関連情報を抽出し、最終的にCSVファイルに保存します。

始める前に、PHP、Selenium、WebDriver (ブラウザードライバーに相当) をインストールする必要があります。この記事の詳細は次のとおりです。

  1. 環境設定と基本構成

まず、ローカル環境に PHP をインストールする必要があります。 PHP7以上を推奨します。次に、Selenium をインストールするには、Composer を使用します。プロジェクトフォルダーにあるcomposerコマンドを使用してインストールし、インストールが成功したら、PHPプログラムの作成を開始できます。

  1. WebDriver と Selenium API の呼び出し

Selenium を使用して自動 Web クローラーを構築する前に、WebDriver を呼び出し、指定されたブラウザーと通信するための WebDriver インスタンスを作成する必要があります。 WebDriver はブラウザ ドライバ インターフェイスであり、ブラウザごとに異なる WebDriver が必要です。

PHP では、Selenium の PHP クライアント ライブラリを使用して WebDriver インスタンスを作成し、指定したブラウザの WebDriver にバインドできます。以下はサンプル コードです:

require_once 'vendor/autoload.php';
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;

// 配置浏览器类型、路径、驱动、和端口
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
  1. ブラウザ セッションの確立とターゲット Web サイトを開く

ブラウザ セッションの作成には 1 行のコードのみが必要で、選択できるのは 1 行だけです。お気に入りのブラウザ (Firefox または Chrome)。

ここでは Chrome ブラウザを使用します。サンプル コードは次のとおりです。

// 使用Chrome浏览器打开目标网站
$driver->get('https://example.com');
  1. データの検索と抽出

対象の Web サイトを開いてページをロードした後、次の要素を見つけて取得する必要があります。必要なデータ。この例では、ターゲット Web サイト内のすべての記事のタイトル、著者、発行日、および記事リンクが検索されます。

次はサンプル コードです:

// 查找所有文章标题
$titles = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article h2 a'));

// 查找作者名字
$author_names = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article .author-name'));

// 查找发布日期
$release_dates = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article .release-date'));

// 查找文章链接
$links = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article h2 a'));

次は各記事のデータを検索して抽出するためのサンプル コードです:

$articles = array();

foreach ($titles as $key => $title) {
    // 提取标题
    $article_title = $title->getText();

    // 提取作者
    $article_author = $author_names[$key]->getText();

    // 提取发布日期
    $article_date = $release_dates[$key]->getText();

    // 提取文章链接
    $article_link = $links[$key]->getAttribute('href');

    // 添加文章到数组
    $articles[] = array(
        'title' => $article_title,
        'author' => $article_author,
        'date' => $article_date,
        'link' => $article_link
    );
}
  1. 結果は CSV に保存されますfile

最後のステップでは、抽出したデータを CSV ファイルに保存します。 PHP 組み込み関数 fputcsv() を使用して、データを CSV ファイルに保存できます。

以下はサンプル コードです:

// 文件流方式打开文件
$file = fopen('articles.csv', 'w');

// 表头
$header = array('Title', 'Author', 'Date', 'Link');

// 写入标题
fputcsv($file, $header);

// 写入文章数据
foreach ($articles as $article) {
    fputcsv($file, $article);
}

// 关闭文件流
fclose($file);

これでコンテンツの抽出とデータ処理が終了します。 CSV ファイル内のデータは、その後の分析や応用に使用できます。さらに、データを他のデータベースにインポートしてさらに処理することもできます。

要約すると、この記事では、PHP と Selenium を使用して自動 Web クローラーを構築する方法と、ターゲット Web サイトのデータを取得して処理し、CSV ファイルに保存する方法を学びました。この例は単なる単純なデモンストレーションであり、SEO、競合製品の分析など、Web サイトからデータを取得する必要があるさまざまなシナリオに適用できます。

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

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