ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Selenium を使用してクローラー データ収集を実装する

PHP と Selenium を使用してクローラー データ収集を実装する

PHPz
PHPzオリジナル
2023-06-16 12:15:101533ブラウズ

インターネット技術の継続的な発展に伴い、データは非常に貴重なリソースとなり、ますます多くの企業がデータの価値に注目し、データマイニングと分析を通じて競争力を向上させ始めています。このプロセスでは、データ収集がデータ分析の最初のステップになります。

現在、クローラー テクノロジーはデータ収集の非常に一般的な方法です。クローラー テクノロジーを使用すると、製品情報、フォーラムの投稿、一部の Web サイトのニュース記事など、インターネット上のさまざまなデータを効果的に取得できます。この記事では、PHPとSeleniumを使用してクローラーのデータ収集を実装する方法を紹介します。

1. セレンとは何ですか?

Selenium は Web アプリケーションをテストするためのツールで、Chrome、Firefox、IE などの複数のブラウザをサポートしています。 Selenium は、リンクのクリック、テキスト ボックスへのデータの入力、フォームの送信など、Web 上のブラウザ操作を自動化できます。

データ収集では、Seleniumを利用してブラウザによるWebページの動作をシミュレートすることでデータ収集を実現します。一般に、データを収集する手順は次のとおりです。

  1. Selenium を使用して収集する Web ページを開きます
  2. Web ページ上でテキスト ボックスへのデータの入力などの操作を実行します。待ち、
  3. 必要なデータを取得します

2. PHP を使用して Selenium を呼び出します

Selenium 自体は Java で書かれているため、次の操作を行う必要があります。 Java で Selenium スクリプトを作成し、PHP を使用して呼び出します。

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

まず、Java と Selenium をインストールする必要があります。ここでは、Ubuntu を例として、次のコマンドを実行するだけです:

sudo apt-get installdefault-jre

sudo apt-get installdefault-jdk

Download Selenium の Java ライブラリはプロジェクト ディレクトリに配置されます。

  1. Selenium スクリプトの書き込み

プロジェクト ディレクトリに selenium.php という名前のファイルを作成し、その中に次のコードのような Java スクリプトを書き込みます。 # #

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumDemo {
 public static void main(String[] args) {
  System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver"); // chromedriver的路径
  WebDriver driver = new ChromeDriver();
  driver.get("http://www.baidu.com"); // 要访问的网站
  String title = driver.getTitle(); // 获取网页标题
  System.out.println(title);
  driver.quit(); // 退出浏览器
 }
}

このスクリプトは Chrome ブラウザを開いて Baidu ホームページにアクセスし、Web ページのタイトルを取得して出力します。 「/path/to/chromedriver」をマシン上の実際のパスに置き換える必要があります。

    Selenium の呼び出し
selenium.php ファイルで、exec() 関数を使用して Java スクリプトを呼び出します。コードは次のとおりです:

<?php
$output = array();
exec("java -cp .:/path/to/selenium-java.jar SeleniumDemo 2>&1", $output);
$title = $output[0];
echo $title;
?>

ここでは、PHP の exec() 関数を使用して Java スクリプトを呼び出します。「/path/to/selenium-java.jar」をマシン上の実際のパスに置き換える必要があります。

上記のコードを実行すると、画面に Baidu の Web ページ タイトルの出力が表示されるはずです。

3. Selenium を使用してデータ収集を実装します

Selenium の基礎を使用して、データ収集の実装を開始できます。京東モールの商品データ収集を例として、Selenium を使用してそれを実装する方法を示します。

    ウェブページを開く
まず、京東モールのホームページを開いて、回収する商品を検索する必要があります。このプロセスでは、Web ページの読み込み時間に注意する必要があります。sleep() 関数を使用すると、プログラムが一定期間一時停止し、Web ページが完全に読み込まれるまで待機することがあります。

<?php
$output = array();
exec("java -cp .:/path/to/selenium-java.jar JingDongDemo 2>&1", $output);
echo $output[0]; // 输出采集到的商品数据
?>

// JingDongDemo.java

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class JingDongDemo {

 public static void main(String[] args) {
  System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver"); // geckodriver的路径
  WebDriver driver = new FirefoxDriver();
  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // 等待网页加载
  driver.get("http://www.jd.com"); // 打开网站
  driver.findElement(By.id("key")).sendKeys("Iphone 7"); // 输入要搜索的商品
  driver.findElement(By.className("button")).click(); // 单击搜索按钮
  try {
   Thread.sleep(5000); // 等待网页完全加载
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
 }
}

    商品データの取得
次に、検索結果内の商品データを取得する必要があります。 JD.com の Web ページでは、製品データはクラス "gl-item" の div に配置されており、findElements() を使用して修飾されたすべての div 要素を取得し、内容を 1 つずつ解析できます。

List<WebElement> productList = driver.findElements(By.className("gl-item")); // 获取所有商品列表项

for(WebElement product : productList) { // 逐个解析商品数据
 String name = product.findElement(By.className("p-name")).getText();
 String price = product.findElement(By.className("p-price")).getText();
 String commentCount = product.findElement(By.className("p-commit")).getText();
 String shopName = product.findElement(By.className("p-shop")).getText();
 String output = name + "    " + price + "    " + commentCount + "    " + shopName + "
";
 System.out.println(output);
}

この時点で、PHP と Selenium を使用したクローラー データ収集の実装に成功しました。もちろん、実際のデータ収集プロセスでは、Web サイトのクローラー対策戦略、ブラウザーと Selenium のバージョンの互換性など、注意しなければならないことがたくさんあります。この記事が、データ収集が必要な友人の参考になれば幸いです。

以上がPHP と Selenium を使用してクローラー データ収集を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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