Web クローラーは、今日のインターネットの世界で最も重要なツールの 1 つとなっており、インターネット上のさまざまな Web サイトを自動的に閲覧し、人々が必要とする有用な情報を抽出できます。自動 Web クローラーのコア技術は、プログラミング言語とさまざまなツールを使用して、データを自動的に処理できるプログラムを構築することです。
近年、Selenium は自動 Web クローラーの分野で最も人気のあるツールの 1 つになりました。これは、クリック、スクロール、入力など、ユーザーがブラウザーで実行するさまざまな操作をシミュレートできるクロスブラウザー自動テスト ツールであり、Web ページからデータを取得することもできます。これにより、Selenium はプログラムが通常のユーザーと同じ方法でデータを取得できるため、自動 Web クローラーの構築に最適です。
この記事では、PHP と Selenium を使用して自動 Web クローラーを構築する方法を紹介します。この記事で紹介するクローラープログラムは、指定したWebサイトを自動的に閲覧し、すべての記事のタイトル、著者、公開日、記事リンクなどの関連情報を抽出し、最終的にCSVファイルに保存します。
始める前に、PHP、Selenium、WebDriver (ブラウザードライバーに相当) をインストールする必要があります。この記事の詳細は次のとおりです。
まず、ローカル環境に PHP をインストールする必要があります。 PHP7以上を推奨します。次に、Selenium をインストールするには、Composer を使用します。プロジェクトフォルダーにあるcomposerコマンドを使用してインストールし、インストールが成功したら、PHPプログラムの作成を開始できます。
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 行のコードのみが必要で、選択できるのは 1 行だけです。お気に入りのブラウザ (Firefox または Chrome)。
ここでは Chrome ブラウザを使用します。サンプル コードは次のとおりです。
// 使用Chrome浏览器打开目标网站 $driver->get('https://example.com');
対象の 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 ); }
最後のステップでは、抽出したデータを 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 サイトの他の関連記事を参照してください。