インターネットの継続的な発展に伴い、情報量は爆発的に増加し、貴重な情報を入手することが多くの人々のニーズとなっています。このような環境の中で、クローラー技術が徐々に台頭し、ビッグデータ時代の重要なツールの 1 つになりました。クローラー技術には幅広い用途があり、ネットワーク世論監視、データ分析、情報マイニングなどの多くの分野で使用できます。この記事では、PHP を使用してカスタム クローラー フレームワークを実装する方法を紹介します。
1. クローラー フレームワークの原理
クローラーとは、Web ページの情報を自動的に取得するプログラムで、Web ページのテキストを巡回して、分析や活用のために貴重なデータを抽出します。クローラー フレームワークは、カスタマイズされた取得、解析、保存、その他の方法を含むクローラー プログラムの基礎です。
クローラー プログラムは、クローラー フレームワークを通じて実装されます。基本的なプロセスは次のとおりです。
2. PHP クローラー フレームワークの実装
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ページ情報を正常に取得できます。
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 クラスを呼び出し、タグの内容の解析を実行します。
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 サイトの他の関連記事を参照してください。