ホームページ  >  記事  >  バックエンド開発  >  PHP と phpSpider を使用して Zhihu Q&A データをキャプチャする方法に関するヒントを共有します。

PHP と phpSpider を使用して Zhihu Q&A データをキャプチャする方法に関するヒントを共有します。

WBOY
WBOYオリジナル
2023-07-21 15:47:06754ブラウズ

PHP と phpSpider を使用して Zhihu Q&A データをキャプチャする方法に関するヒントを共有します!

中国最大の知識共有プラットフォームとして、Zhihu には膨大な量の質問と回答のデータがあり、多くの開発者や研究者にとって、このデータの取得と分析は非常に貴重です。この記事では、PHP と phpSpider を使用して Zhihu Q&A データをキャプチャする方法を紹介し、いくつかのヒントと実用的なコード例を共有します。

1. phpSpider のインストール

phpSpider は、PHP 言語で書かれたクローラー フレームワークで、強力なデータ キャプチャおよび処理機能を備えており、Zhihu Q&A データのキャプチャに非常に適しています。 phpSpider のインストール手順は次のとおりです:

  1. Composer のインストール: まず Composer がインストールされていることを確認してください。次のコマンドを実行することで、Composer がインストールされているかどうかを確認できます:
composer -v

正常に動作する場合 Composer のバージョン番号が表示されていれば、インストールは成功しています。

  1. 新しいプロジェクト ディレクトリを作成します: コマンド ラインで次のコマンドを実行して、新しい phpSpider プロジェクトを作成します:
composer create-project vdb/php-spider my-project

これにより、my-project new という名前のプロジェクトが作成されます。ディレクトリに移動し、そこに phpSpider をインストールします。

2. phpSpider コードを作成します

  1. 新しい phpSpider タスクを作成します: my-project ディレクトリに入り、次のコマンドを使用して新しい phpSpider タスクを作成します:
./phpspider --create mytask

これにより、my-project ディレクトリに mytask という新しいディレクトリが作成されます。このディレクトリには、データのスクレイピングに必要なファイルが含まれています。

  1. クロール ルールの編集: mytask ディレクトリで、rules.php ファイルを開きます。これは、クロール ルールを定義するために使用される PHP スクリプトです。このスクリプトでは、クロールする必要がある Zhihu Q&A ページの URL と、抽出するデータ フィールドを定義できます。

次は、単純なクロール ルールの例です:

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 という名前のクロール タスクを定義しました。これは、「特定の質問に対するすべての回答を取得する」をクロールします。 。これには、抽出する必要があるデータ フィールド名、セレクター タイプ、およびセレクターが含まれます。

  1. カスタム コールバック関数を作成する: mytask ディレクトリで、callback.php ファイルを開きます。これは、キャプチャされたデータの処理と保存に使用される PHP スクリプトです。

以下は、カスタム コールバック関数の簡単な例です:

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 タスクを実行します

  1. phpSpider タスクを開始します: my-project ディレクトリで、次のコマンドを使用して phpSpider タスクを開始します:
./phpspider --daemon mytask

これにより、バックグラウンドで phpSpider プロセスが開始され、Zhihu Q&A データの取得が開始されます。

  1. クロール結果の表示: phpSpider タスクは、クロールされたデータを、タスク名をファイル名としてデータ ディレクトリに保存します。各クロール タスクはファイルに対応します。

次のコマンドを使用してクロール結果を表示できます:

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 サイトの他の関連記事を参照してください。

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