ホームページ  >  記事  >  バックエンド開発  >  PHP を使用してカスタム クローラー フレームワークを実装する方法

PHP を使用してカスタム クローラー フレームワークを実装する方法

WBOY
WBOYオリジナル
2023-06-13 19:13:281022ブラウズ

インターネットの継続的な発展に伴い、情報量は爆発的に増加し、貴重な情報を入手することが多くの人々のニーズとなっています。このような環境の中で、クローラー技術が徐々に台頭し、ビッグデータ時代の重要なツールの 1 つになりました。クローラー技術には幅広い用途があり、ネットワーク世論監視、データ分析、情報マイニングなどの多くの分野で使用できます。この記事では、PHP を使用してカスタム クローラー フレームワークを実装する方法を紹介します。

1. クローラー フレームワークの原理

クローラーとは、Web ページの情報を自動的に取得するプログラムで、Web ページのテキストを巡回して、分析や活用のために貴重なデータを抽出します。クローラー フレームワークは、カスタマイズされた取得、解析、保存、その他の方法を含むクローラー プログラムの基礎です。

クローラー プログラムは、クローラー フレームワークを通じて実装されます。基本的なプロセスは次のとおりです。

  1. Web ページ情報の取得: HTTP プロトコルを通じてターゲット Web サイトにリクエストを送信し、取得します。ウェブページのテキスト情報。
  2. Web ページ情報の解析: Web ページのテキストを解析し、処理対象のデータを抽出します。
  3. 処理結果の保存: 後のデータ分析と利用のために、処理されたデータを保存します。

2. PHP クローラー フレームワークの実装

  1. Web ページ情報の取得

PHP では、CURL ライブラリを通じて HTTP リクエストを実装できます。 CURL は、PHP で URL (Uniform Resource Locator、Uniform Resource Locator) を処理するために使用できる強力なオープン ソース ネットワーク ライブラリです。

コードは次のとおりです:

$ch = curl_init();  // 初始化 cURL
$options =  array(
    CURLOPT_URL => $url,  // 请求的 URL
    CURLOPT_RETURNTRANSFER => 1,  // 返回原生的输出内容
    CURLOPT_ENCODING => '',  // 自动处理响应头中的 Transfer-Encoding
    CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT']  // 模拟 user-agent
);
curl_setopt_array($ch, $options); 
$result = curl_exec($ch);  // 执行请求
curl_close($ch);  // 关闭请求链接

上記のコードまず、curl_init() 関数を使用して CURL を初期化し、次に、curl_setopt_array() 関数を使用して、要求された URL を含む CURL 要求のさまざまなパラメータを設定し、ネイティブ出力コンテンツを返し、応答ヘッダーの Transfer-Encoding を自動的に処理します。ユーザーエージェントをシミュレートします。最後に、curl_exec() を通じてリクエストを実行し、リクエスト リンクを閉じます。上記のコードを実行すると、対象のWebサイトのWebページ情報を正常に取得できます。

  1. Web ページ情報の解析

PHP では、DOMDocument クラスを使用して HTML テキストを解析できます。これにより、一連の DOM (ドキュメント オブジェクト モデル、ドキュメント オブジェクト モデル) が提供されます。 ) インターフェイス。HTML テキストを簡単に解析できます。

コードは次のとおりです:

$doc = new DOMDocument();
$doc->loadHTML($result);  // 加载 HTML 内容
$xpath = new DOMXPath($doc);
$tags = $xpath->query('//tag')  // 获取指定标签
foreach ($tags as $tag) {
    // 对标签内容进行解析
}

上記のコードは、最初に DOMDocument クラスのオブジェクトを作成し、次に、loadHTML() 関数を通じて Web ページのテキストを読み込み、次に、指定されたタグを取得します。 DOMXPath クラスを呼び出し、タグの内容の解析を実行します。

  1. ストレージ処理結果

PHP では、一連の PDO (PHP データ オブジェクト、PHP データ オブジェクト) インターフェイスを提供する MySQL データベースを通じてデータを保存できます。データベース操作を簡単に実行できます。

コードは次のとおりです:

$pdo = new PDO('mysql:host=$dbhost;dbname=$dbname', $username, $password); // 连接数据库
$sql = 'INSERT INTO table_name (field1, field2, ...) VALUES (:value1, :value2, ...)';  // SQL 语句
$stmt = $pdo->prepare($sql);  // 预处理 SQL 语句
$stmt->bindParam(':param1', $value1);  // 绑定参数
$stmt->bindParam(':param2', $value2);
...
$stmt->execute();  // 执行 SQL 语句

上記のコードでは、まず PDO オブジェクトを使用して MySQL データベースに接続し、次に SQL ステートメントを使用して指定されたデータ テーブルにデータを挿入します。 SQL ステートメントを前処理してパラメータをバインドし、その後 SQL ステートメントを直接実行することでデータをデータベースに正常に保存できます。

3. クローラー フレームワークの使用例

クローラー フレームワークを実装した後、それを使用して任意の Web サイトをクロールできます。簡単な使用例を以下に示します。たとえば、Zhihu ユーザー情報をクロールする必要があるとします。まず、ユーザーのページ情報を取得する必要があります:

$url = "https://www.zhihu.com/people/xxx";
$result = getCurl($url);

次に、返されたページ情報を XPath 経由で解析し、ターゲット情報を取得します:

$doc = new DOMDocument();
$doc->loadHTML($result);
$xpath = new DOMXPath($doc);
// 用户名
$username = $xpath->query("//*[@class='ProfileHeader-name']/text()")->item(0)->nodeValue;
// 签名
$userbio = $xpath->query("//div[@class='ProfileHeader-headline']/span//@title")->item(0)->nodeValue;
// 关注数
$following_count = $xpath->query("//*[@class='NumberBoard-itemValue']/text()")->item(2)->nodeValue;
// 粉丝数
$followers_count = $xpath->query("//*[@class='NumberBoard-itemValue']/text()")->item(3)->nodeValue;

最後に、MySQL データベースを使用して、取得したターゲット情報を保存できます:

$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');
$sql = "INSERT INTO `zhihu_users`(`username`, `userbio`, `following_count`, `followers_count`, `updated_at`) VALUES (:username, :userbio, :following_count, :followers_count, NOW())";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':userbio', $userbio);
$stmt->bindParam(':following_count', $following_count);
$stmt->bindParam(':followers_count', $followers_count);
$stmt->execute();

上記のコード例を通じて、Web ページの取得など、PHP を使用してカスタム クローラー フレームワークを実装するプロセスを確認できます。情報、Web ページ情報を解析し、処理結果やその他の操作を保存します。このフレームワークにより、対象の Web サイトを簡単に巡回して分析し、データ適用の効率と精度を向上させることができます。

以上がPHP を使用してカスタム クローラー フレームワークを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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