Partage de conseils sur la capture des données de questions-réponses de Zhihu à l'aide de PHP et phpSpider !
En tant que plus grande plateforme de partage de connaissances en Chine, Zhihu dispose d'une quantité massive de données de questions et réponses. Pour de nombreux développeurs et chercheurs, l'obtention et l'analyse de ces données sont très précieuses. Cet article expliquera comment utiliser PHP et phpSpider pour capturer les données de questions-réponses de Zhihu, et partagera quelques conseils et exemples de code pratiques.
1. Installez phpSpider
phpSpider est un framework d'exploration écrit en langage PHP. Il dispose de puissantes fonctions de capture et de traitement de données et est très approprié pour capturer les données de questions-réponses de Zhihu. Voici les étapes d'installation de phpSpider :
composer -v
Si le numéro de version de Composer peut être affiché normalement. , cela signifie que l'installation a réussi.
composer create-project vdb/php-spider my-project
Cela créera un nouveau répertoire appelé mon-projet et y installera phpSpider.
2. Écrivez le code phpSpider
./phpspider --create mytask
Cela créera une nouvelle tâche phpSpider dans le my-project. répertoire du projet nommé mytask Un nouveau répertoire contenant les fichiers nécessaires pour récupérer les données.
Ce qui suit est un exemple de règle d'exploration simple :
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()" ) ) );
Dans l'exemple ci-dessus, nous avons défini une tâche d'exploration appelée Zhihu Q&A, qui explore toutes les réponses à une question spécifique. Il contient le nom du champ de données, le type de sélecteur et le sélecteur qui doivent être extraits.
Ce qui suit est un exemple de fonction de rappel personnalisée simple :
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; } // 保存数据到文件或数据库 // ... }
Dans l'exemple ci-dessus, nous avons défini une fonction de rappel nommée handle_content, qui sera appelée une fois les données capturées. Dans cette fonction, nous avons extrait le titre de la question et le contenu de la réponse à l'aide du sélecteur XPath et enregistré les données dans le tableau $data.
3. Exécutez la tâche phpSpider
./phpspider --daemon mytask
Cela démarrera un processus phpSpider en arrière-plan et commencera à explorer Zhihu. Données de questions et réponses.
Vous pouvez afficher les résultats de l'exploration avec la commande suivante :
tail -f data/mytask/data.log
Cela affichera le journal d'exploration et les résultats en temps réel.
4. Résumé
Cet article présente les techniques d'utilisation de PHP et phpSpider pour capturer les données de questions-réponses de Zhihu. En installant phpSpider, en écrivant des règles d'exploration et des fonctions de rappel personnalisées, et en exécutant des tâches phpSpider, nous pouvons facilement explorer et traiter les données de questions-réponses de Zhihu.
Bien sûr, phpSpider a des fonctions et des utilisations plus puissantes, telles que l'exploration simultanée, les paramètres de proxy, les paramètres UA, etc., qui peuvent être configurés et utilisés en fonction des besoins réels. J'espère que cet article sera utile aux développeurs qui souhaitent capturer les données de questions-réponses de Zhihu !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!