Maison interface Web js tutoriel Un robot d'exploration puissant basé sur Node.js qui peut publier directement les articles_node.js analysés

Un robot d'exploration puissant basé sur Node.js qui peut publier directement les articles_node.js analysés

May 16, 2016 pm 03:20 PM
node.js 爬虫

1. Configuration de l'environnement

1) Construisez un serveur, n'importe quel Linux fera l'affaire, j'utilise CentOS 6.5

2) Installez une base de données MySQL, soit 5.5, soit 5.6. Pour éviter les problèmes, vous pouvez l'installer directement avec lnmp ou lamp. Vous pouvez également lire les logs directement dans le navigateur plus tard ;

3) Installez d'abord un environnement node.js. J'utilise 0.12.7. Je n'ai pas essayé les versions ultérieures

.

4) Exécutez npm -g install Forever pour installer définitivement afin que le robot puisse s'exécuter en arrière-plan

 ;

5) Organiser tout le code localement (intégration = git clone

) ;

6) Exécutez npm install dans le répertoire du projet pour installer les bibliothèques dépendantes

7) Créez deux dossiers vides, json et avatar, dans le répertoire du projet

8) Créez une base de données mysql vide et un utilisateur avec toutes les autorisations, exécutez successivement setup.sql et startusers.sql dans le code, créez la structure de la base de données et importez l'utilisateur initial

 ;

9) Modifiez config.js, les éléments de configuration marqués (obligatoires) doivent être remplis ou modifiés, et les éléments restants peuvent rester inchangés pour le moment :


exports.jsonPath = "./json/";//生成json文件的路径
exports.avatarPath = "./avatar/";//保存头像文件的路径
exports.dbconfig = {
  host: 'localhost',//数据库服务器(必须)
  user: 'dbuser',//数据库用户名(必须)
  password: 'dbpassword',//数据库密码(必须)
  database: 'dbname',//数据库名(必须)
  port: 3306,//数据库服务器端口
  poolSize: 20,
  acquireTimeout: 30000
};
  
exports.urlpre = "http://www.jb51.net/";//脚本网址
exports.urlzhuanlanpre = "http://www.jb51.net/list/index_96.htm/";//脚本网址
  
exports.WPurl = "www.xxx.com";//要发布文章的wordpress网站地址
exports.WPusername = "publishuser";//发布文章的用户名
exports.WPpassword = "publishpassword";//发布文章用户的密码
exports.WPurlavatarpre = "http://www.xxx.com/avatar/";//发布文章中替代原始头像的url地址
  
exports.mailservice = "QQ";//邮件通知服务类型,也可以用Gmail,前提是你访问得了Gmail(必须)
exports.mailuser = "12345@qq.com";//邮箱用户名(必须)
exports.mailpass = "qqpassword";//邮箱密码(必须)
exports.mailfrom = "12345@qq.com";//发送邮件地址(必须,一般与用户名所属邮箱一致)
exports.mailto = "12345@qq.com";//接收通知邮件地址(必须)
Copier après la connexion
Enregistrez et passez à l'étape suivante.

2. Utilisateurs du robot

Le principe du robot est en fait de simuler un véritable utilisateur de Zhihu cliquant sur le site Web et collectant des données, nous avons donc besoin d'un véritable utilisateur de Zhihu. Pour les tests, vous pouvez utiliser votre propre compte, mais pour des raisons à long terme, il est préférable d'enregistrer un compte spécial. Un seul suffit, et le robot d'exploration actuel n'en prend en charge qu'un. Notre processus de simulation n'a pas besoin de se connecter depuis la page d'accueil comme un vrai utilisateur, mais emprunte directement la valeur du cookie :

Après vous être inscrit, activé et connecté, accédez à votre page d'accueil, utilisez n'importe quel navigateur avec mode développeur ou plug-in de cookie et ouvrez vos propres cookies dans Zhihu. Il peut y avoir une liste très complexe, mais nous n'en avons besoin que d'une partie, à savoir "z_c0". Copiez la partie z_c0 de votre propre cookie, en laissant de côté les signes égal, les guillemets et les points-virgules. Le format final ressemble à ceci :

.

z_c0="LA8kJIJFdDSOA883wkUGJIRE8jVNKSOQfB9430=|1420113988|a6ea18bc1b23ea469e3b5fb2e33c2828439cb";
Copier après la connexion
Insérer une ligne d'enregistrements dans la table cookies de la base de données mysql, où les valeurs de chaque champ sont :


  • e-mail : l'e-mail de connexion de l'utilisateur du robot
  • mot de passe : le mot de passe de l'utilisateur du robot
  • nom : nom d'utilisateur du robot
  • hash : le hachage de l'utilisateur du robot (un identifiant unique qui ne peut pas être modifié par chaque utilisateur. En fait, il n'est pas utilisé ici et peut être laissé vide temporairement)
  • cookie : le cookie que vous venez de copier
Ensuite, il peut officiellement commencer à fonctionner. Si le cookie expire ou si l'utilisateur est bloqué, modifiez simplement le champ du cookie dans cette ligne d'enregistrements.

3. Fonctionnement

Il est recommandé d'utiliser Forever pour exécuter, ce qui facilite non seulement l'exécution et la journalisation en arrière-plan, mais également le redémarrage automatique après un crash. Exemple :


forever -l /var/www/log.txt index.js
Copier après la connexion
L'adresse après -l est l'endroit où le journal est enregistré. S'il est placé dans le répertoire du serveur Web, il est accessible dans le navigateur via

http://www.xxx.com/log.txt<.> Consultez directement le journal. Ajoutez des paramètres (séparés par des espaces) après index.js pour exécuter différentes instructions du robot : 1. -i s'exécute immédiatement Si ce paramètre n'est pas ajouté, il sera exécuté par défaut à la prochaine heure spécifiée, par exemple à 0h05 du matin ; 2. -ng ignore la phase de récupération de nouveaux utilisateurs, c'est-à-dire getnewuser
 ; 3. -ns ignore la phase d'instantané, c'est-à-dire l'instantané de l'utilisateur
; 4. -nf ignore l'étape de génération du fichier de données, c'est-à-dire saveviewfile
; 5. -db affiche les journaux de débogage.
Les fonctions de chaque étape sont présentées dans la section suivante. Afin de faciliter l'opération, vous pouvez écrire cette ligne de commande sous forme de script sh, par exemple :


Veuillez remplacer le chemin spécifique par le vôtre. De cette façon, vous pouvez démarrer le robot d'exploration en ajoutant des paramètres à ./zhihuspider.sh : Par exemple, ./zhihuspider.sh -i -ng -nf démarre la tâche immédiatement et ignore les étapes d'enregistrement du nouvel utilisateur et du fichier. La méthode pour arrêter le robot est "every stopall" (ou arrêter le numéro de série).

4. Aperçu des principes

Vérifiez que le fichier d'entrée du robot d'exploration Zhihu est index.js. Il exécute des tâches de robot d'exploration à des heures spécifiées chaque jour en boucle. Il y a trois tâches qui sont exécutées séquentiellement chaque jour, à savoir :

1) getnewuser.js : Capturez les informations sur les nouveaux utilisateurs en comparant la liste des utilisateurs abonnés dans la bibliothèque actuelle. En vous appuyant sur ce mécanisme, vous pouvez automatiquement répertorier les utilisateurs dignes de ce nom. Zhihu De nouvelles personnes sont ajoutées à la bibliothèque

2) usersnapshot.js : Boucles pour capturer les informations utilisateur et les listes de réponses dans la bibliothèque actuelle, et les enregistrer sous forme d'instantanés quotidiens.

3) saveviewfile.js : Générez une liste d'analyse des utilisateurs basée sur le contenu du dernier instantané, filtrez les réponses d'essence d'hier, récentes et historiques et publiez-les sur le Site Web "Kanzhihu".

Une fois les trois tâches ci-dessus terminées, le fil de discussion principal actualisera la page d'accueil de Zhihu toutes les quelques minutes pour vérifier si le cookie actuel est toujours valide. S'il n'est pas valide (en passant à la page de non-connexion), un e-mail de notification sera envoyé. être envoyé à la boîte aux lettres spécifiée, vous rappelle de modifier les cookies à temps. La méthode de modification des cookies est la même que lors de l'initialisation. Il vous suffit de vous connecter manuellement une fois, puis de supprimer la valeur du cookie. Si vous êtes intéressé par l'implémentation spécifique du code, vous pouvez lire attentivement les commentaires à l'intérieur, ajuster certaines configurations ou même essayer de reconstruire l'intégralité du robot vous-même.

Conseils

1) Le principe de getnewuser est de spécifier la capture en comparant le nombre de suivis des utilisateurs dans les instantanés des deux jours avant et après, elle doit donc avoir au moins deux instantanés avant de pouvoir être démarrée. est exécuté avant, il sera automatiquement ignoré.

2) La moitié de l'instantané peut être restaurée. Si le programme plante à cause d'une erreur, utilisez toujours stop pour l'arrêter, puis ajoutez les paramètres -i -ng pour l'exécuter immédiatement et ignorer la nouvelle phase utilisateur, afin de pouvoir continuer à partir de l'instantané à moitié capturé.

3) N'augmentez pas facilement le nombre de (pseudo) threads lors de la prise d'instantanés, c'est-à-dire l'attribut maxthreadcount dans les utilisateursnapshots. Trop de threads provoqueront des erreurs 429 et la grande quantité de données capturées risque de ne pas être écrite dans la base de données à temps, provoquant un débordement de mémoire. Par conséquent, sauf si votre base de données est sur un SSD, ne dépassez pas 10 threads.

4) Le travail de sauvegarde du fichier de vue pour générer les résultats d'analyse nécessite des instantanés d'au moins 7 jours. Si le contenu de l'instantané date de moins de 7 jours, une erreur sera signalée et ignorée. Le travail d'analyse précédent peut être effectué en interrogeant manuellement la base de données.

5) Considérant que la plupart des gens n'ont pas besoin de copier un "Kanzhihu", l'entrée de la fonction de publication automatique d'articles WordPress a été commentée. Si vous avez configuré WordPress, pensez à activer xmlrpc, puis configurez un utilisateur spécifiquement pour la publication d'articles, configurez les paramètres correspondants dans config.js et décommentez le code correspondant dans saveviewfile.

6) Depuis que Zhihu a mis en place un traitement anti-sangsue pour les avatars, nous avons également obtenu les avatars lors de la capture des informations utilisateur et les avons enregistrés localement lors de la publication d'articles, nous avons utilisé l'adresse locale de l'avatar. Vous devez pointer le chemin URL du serveur http vers le dossier où l'avatar est enregistré, ou placer le dossier où l'avatar est enregistré directement dans le répertoire du site Web.

7) Le code peut ne pas être facile à lire. En plus de la structure de rappel déroutante de node.js lui-même, cela s'explique en partie par le fait que lorsque j'ai écrit le programme pour la première fois, je venais de commencer à entrer en contact avec node.js. Il y avait de nombreux endroits inconnus qui provoquaient la structure. déroutant et je n'ai pas eu le temps de le corriger ; une autre partie était qu'après plusieurs fois, de nombreuses conditions de jugement laides et des règles de nouvelle tentative s'accumulent dans le patchwork. Si elles sont toutes supprimées, le volume de code peut être réduit des deux tiers. Mais il n’y a aucun moyen de contourner ce problème afin d’assurer le fonctionnement stable d’un système, ceux-ci doivent être ajoutés.

8) Ce code source de robot est basé sur le protocole WTFPL et n'impose aucune restriction de modification et de publication.

Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Combien de temps faut-il pour apprendre le robot d'exploration Python Combien de temps faut-il pour apprendre le robot d'exploration Python Oct 25, 2023 am 09:44 AM

Le temps nécessaire pour apprendre les robots d'exploration Python varie d'une personne à l'autre et dépend de facteurs tels que la capacité d'apprentissage personnelle, les méthodes d'apprentissage, le temps d'apprentissage et l'expérience. L'apprentissage des robots d'exploration Python ne consiste pas seulement à apprendre la technologie elle-même, mais nécessite également de bonnes compétences en matière de collecte d'informations, de résolution de problèmes et de travail d'équipe. Grâce à un apprentissage et à une pratique continus, vous deviendrez progressivement un excellent développeur de robots Python.

Conseils pour les robots : comment gérer les cookies en PHP Conseils pour les robots : comment gérer les cookies en PHP Jun 13, 2023 pm 02:54 PM

Dans le développement de robots d'exploration, la gestion des cookies est souvent une partie essentielle. En tant que mécanisme de gestion d'état dans HTTP, les cookies sont généralement utilisés pour enregistrer les informations de connexion et le comportement des utilisateurs. Ils constituent la clé permettant aux robots d'exploration de gérer l'authentification des utilisateurs et de maintenir l'état de connexion. Dans le développement de robots PHP, la gestion des cookies nécessite de maîtriser certaines compétences et de prêter attention à certains pièges. Ci-dessous, nous expliquons en détail comment gérer les cookies en PHP. 1. Comment obtenir un cookie lors de l'écriture en PHP

Analyse et solutions aux problèmes courants des robots PHP Analyse et solutions aux problèmes courants des robots PHP Aug 06, 2023 pm 12:57 PM

Analyse des problèmes courants et solutions pour les robots PHP Introduction : Avec le développement rapide d'Internet, l'acquisition de données réseau est devenue un maillon important dans divers domaines. En tant que langage de script largement utilisé, PHP possède de puissantes capacités d’acquisition de données. L’une des technologies couramment utilisées est celle des robots d’exploration. Cependant, lors du développement et de l’utilisation des robots d’exploration PHP, nous rencontrons souvent des problèmes. Cet article analysera et proposera des solutions à ces problèmes et fournira des exemples de code correspondants. 1. Description du problème selon lequel les données de la page Web cible ne peuvent pas être correctement analysées.

Pratique efficace du robot d'exploration Java : partage des techniques d'exploration de données Web Pratique efficace du robot d'exploration Java : partage des techniques d'exploration de données Web Jan 09, 2024 pm 12:29 PM

Pratique du robot d'exploration Java : Comment explorer efficacement les données d'une page Web Introduction : Avec le développement rapide d'Internet, une grande quantité de données précieuses est stockée dans diverses pages Web. Pour obtenir ces données, il est souvent nécessaire d’accéder manuellement à chaque page web et d’en extraire les informations une par une, ce qui est sans doute une tâche fastidieuse et chronophage. Afin de résoudre ce problème, les utilisateurs ont développé divers outils de robots d'exploration, parmi lesquels le robot d'exploration Java est l'un des plus couramment utilisés. Cet article amènera les lecteurs à comprendre comment utiliser Java pour écrire un robot d'exploration Web efficace et à démontrer la pratique à travers des exemples de code spécifiques. 1. La base du reptile

Exploration efficace des données de pages Web : utilisation combinée de PHP et Selenium Exploration efficace des données de pages Web : utilisation combinée de PHP et Selenium Jun 15, 2023 pm 08:36 PM

Avec le développement rapide de la technologie Internet, les applications Web sont de plus en plus utilisées dans notre travail et notre vie quotidienne. Dans le processus de développement d’applications Web, l’exploration des données des pages Web est une tâche très importante. Bien qu’il existe de nombreux outils de web scraping sur le marché, ces outils ne sont pas très efficaces. Afin d'améliorer l'efficacité de l'exploration des données des pages Web, nous pouvons utiliser la combinaison de PHP et Selenium. Tout d’abord, nous devons comprendre ce que sont PHP et Selenium. PHP est un puissant

Pratique pratique du robot d'exploration : utiliser PHP pour explorer les informations boursières Pratique pratique du robot d'exploration : utiliser PHP pour explorer les informations boursières Jun 13, 2023 pm 05:32 PM

La bourse a toujours été un sujet de grande préoccupation. Les hausses, baisses et variations quotidiennes des actions affectent directement les décisions des investisseurs. Si vous souhaitez comprendre les derniers développements du marché boursier, vous devez obtenir et analyser les informations boursières en temps opportun. La méthode traditionnelle consiste à ouvrir manuellement les principaux sites Web financiers pour afficher les données boursières une par une. Cette méthode est évidemment trop lourde et inefficace. À l’heure actuelle, les robots d’exploration sont devenus une solution très efficace et automatisée. Ensuite, nous montrerons comment utiliser PHP pour écrire un programme simple d'analyse des actions afin d'obtenir des données boursières. permettre

Pratique PHP : exploration des données du barrage Bilibili Pratique PHP : exploration des données du barrage Bilibili Jun 13, 2023 pm 07:08 PM

Bilibili est un site Web de vidéos de barrage populaire en Chine. C'est également un trésor contenant toutes sortes de données. Parmi elles, les données de barrage sont une ressource très précieuse, c'est pourquoi de nombreux analystes de données et chercheurs espèrent obtenir ces données. Dans cet article, je présenterai l'utilisation du langage PHP pour explorer les données du barrage Bilibili. Travail de préparation Avant de commencer à explorer les données du barrage, nous devons installer un framework de robot d'exploration PHP Symphony2. Vous pouvez entrer via la commande suivante

Tutoriel sur l'utilisation de PHP pour explorer les critiques de films Douban Tutoriel sur l'utilisation de PHP pour explorer les critiques de films Douban Jun 14, 2023 pm 05:06 PM

À mesure que le marché du film continue de s'étendre et de se développer, la demande de films est également de plus en plus élevée. En ce qui concerne l'évaluation des films, Douban Film Critics a toujours été un choix plus faisant autorité et plus populaire. Parfois, nous devons également effectuer certaines analyses et traitements sur les critiques de films Douban, ce qui nécessite l'utilisation d'une technologie d'exploration pour obtenir des informations sur les critiques de films Douban. Cet article présentera un didacticiel sur la façon d'utiliser PHP pour explorer les critiques de films Douban pour votre référence. Obtenez l'adresse de la page des films Douban. Avant d'explorer les critiques de films Douban, vous devez obtenir l'adresse de la page des films Douban. D'ACCORD

See all articles