PHP と phpSpider を使用して Zhihu Q&A データをキャプチャする方法に関するヒントを共有します!
中国最大の知識共有プラットフォームとして、Zhihu には膨大な量の質問と回答のデータがあり、多くの開発者や研究者にとって、このデータの取得と分析は非常に貴重です。この記事では、PHP と phpSpider を使用して Zhihu Q&A データをキャプチャする方法を紹介し、いくつかのヒントと実用的なコード例を共有します。
1. phpSpider のインストール
phpSpider は、PHP 言語で書かれたクローラー フレームワークで、強力なデータ キャプチャおよび処理機能を備えており、Zhihu Q&A データのキャプチャに非常に適しています。 phpSpider のインストール手順は次のとおりです:
composer -v
正常に動作する場合 Composer のバージョン番号が表示されていれば、インストールは成功しています。
composer create-project vdb/php-spider my-project
これにより、my-project new という名前のプロジェクトが作成されます。ディレクトリに移動し、そこに phpSpider をインストールします。
2. phpSpider コードを作成します
./phpspider --create mytask
これにより、my-project ディレクトリに mytask という新しいディレクトリが作成されます。このディレクトリには、データのスクレイピングに必要なファイルが含まれています。
次は、単純なクロール ルールの例です:
return array( 'name' => '知乎问答', 'tasknum' => 1, 'domains' => array( 'www.zhihu.com' ), 'start_urls' => array( 'https://www.zhihu.com/question/XXXXXXXX' ), 'scan_urls' => array(), 'list_url_regexes' => array( "https://www.zhihu.com/question/XXXXXXXX/page/([0-9]+)" ), 'content_url_regexes' => array( "https://www.zhihu.com/question/XXXXXXXX/answer/([0-9]+)" ), 'fields' => array( array( 'name' => "question", 'selector_type' => 'xpath', 'selector' => "//h1[@class='QuestionHeader-title']/text()" ), array( 'name' => "answer", 'selector_type' => 'xpath', 'selector' => "//div[@class='RichContent-inner']/text()" ) ) );
上の例では、Zhihu Q&A という名前のクロール タスクを定義しました。これは、「特定の質問に対するすべての回答を取得する」をクロールします。 。これには、抽出する必要があるデータ フィールド名、セレクター タイプ、およびセレクターが含まれます。
以下は、カスタム コールバック関数の簡単な例です:
function handle_content($url, $content) { $data = array(); $dom = new DOMDocument(); @$dom->loadHTML($content); // 使用XPath选择器提取问题标题 $xpath = new DOMXPath($dom); $question = $xpath->query("//h1[@class='QuestionHeader-title']"); $data['question'] = $question->item(0)->nodeValue; // 使用XPath选择器提取答案内容 $answers = $xpath->query("//div[@class='RichContent-inner']"); foreach ($answers as $answer) { $data['answer'][] = $answer->nodeValue; } // 保存数据到文件或数据库 // ... }
上の例では、handle_content という名前のコールバック関数を定義しました。この関数は、データの取得後に呼び出されます。 。この関数では、XPath セレクターを使用して質問のタイトルと回答の内容を抽出し、データを $data 配列に保存しました。
3. phpSpider タスクを実行します
./phpspider --daemon mytask
これにより、バックグラウンドで phpSpider プロセスが開始され、Zhihu Q&A データの取得が開始されます。
次のコマンドを使用してクロール結果を表示できます:
tail -f data/mytask/data.log
これにより、クロール ログと結果がリアルタイムで表示されます。
4. 概要
この記事では、PHP と phpSpider を使用して Zhihu Q&A データをキャプチャするテクニックを紹介します。 phpSpider をインストールし、クロール ルールとカスタム コールバック関数を記述し、phpSpider タスクを実行することで、Zhihu Q&A データを簡単にクロールして処理できます。
もちろん、phpSpider には、同時クロール、プロキシ設定、UA 設定など、実際のニーズに応じて構成して使用できる、より強力な機能と使用法があります。この記事が、Zhihu Q&A データの取得に興味のある開発者に役立つことを願っています。
以上がPHP と phpSpider を使用して Zhihu Q&A データをキャプチャする方法に関するヒントを共有します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。