Un robot / spider Web très simple en C ++?

J’essaie de faire un crawler / application web très simple en C ++. J’ai été recherché sur Google pour un simple à comprendre le concept. Et j’ai trouvé ceci:

http://www.example-code.com/vcpp/spider.asp

Mais, c’est un peu compliqué / difficile à digérer pour moi.

Ce que j’essaie de faire, c’est juste, par exemple:

entrez l’URL: www.example.com (j’utiliserai bash-> wget pour obtenir le contenu / le code source)

alors, cherchera peut-être un lien “href”, puis stockera dans un fichier de données.

Un tutoriel simple, ou des lignes direcsortingces pour moi?

Je commence tout juste à apprendre le C ++ (1 mois)

Très bien, je vais essayer de vous indiquer la bonne direction. Conceptuellement, un webcrawler est assez simple. Il s’articule autour d’une structure de données de la queue FIFO qui stocke les URL en attente. C ++ a une structure de queue intégrée dans la bibliothèque standard, std::queuehttps://stackoverflow.com/questions/4278024/a-very-simple-c-web-crawler-spider/ , que vous pouvez utiliser pour stocker les URL sous forme de chaînes.

L’algorithme de base est assez simple:

  1. Commencez par une URL de base que vous sélectionnez et placez-la en haut de votre queue.
  2. Pop l’URL en haut de la queue et le télécharger
  3. Analyser le fichier HTML téléchargé et extraire tous les liens
  4. Insérer chaque lien extrait dans la queue
  5. Allez à l’étape 2 ou arrêtez-vous une fois que vous avez atteint une limite spécifiée

Maintenant, j’ai dit qu’un webcrawler est conceptuellement simple, mais sa mise en œuvre n’est pas si simple. Comme vous pouvez le constater grâce à l’algorithme ci-dessus, vous aurez besoin: d’une bibliothèque de réseau HTTP pour vous permettre de télécharger des URL et d’ un bon parsingur HTML permettant d’extraire des liens. Vous avez mentionné que vous pourriez utiliser wgethttps://stackoverflow.com/questions/4278024/a-very-simple-c-web-crawler-spider/ pour télécharger des pages. Cela simplifie un peu les choses, mais vous devez quand même parsingr les documents HTML téléchargés. Analyser correctement le HTML est une tâche non sortingviale. Une simple recherche de chaîne pour ne fonctionnera que parfois. Cependant, s'il ne s'agit que d'un programme jouet que vous utilisez pour vous familiariser avec C ++, une simple recherche de chaîne peut suffire à vos besoins. Sinon, vous devez utiliser une bibliothèque d’parsing HTML sérieuse.

Vous devez également prendre en compte d'autres considérations lors de l'écriture d'un robot Web, telles que la politesse. Les gens vont être énervés et peut-être même interdire votre IP si vous essayez de télécharger trop de pages, trop rapidement, à partir du même hôte. Il se peut donc que vous deviez mettre en place une sorte de politique obligeant votre robot Web à attendre quelques instants avant de télécharger chaque site. Vous avez également besoin d’un mécanisme permettant d’éviter de télécharger à nouveau la même adresse URL, d’obéir au protocole d’exclusion des robots , d’éviter les pièges des robots d'exploration, etc ... Tous ces détails s’ajoutent à l’impact réel de la mise en œuvre d’un robot Web robuste.

Cela dit, je suis d'accord avec Larsmans dans les commentaires. Un webcrawler n'est pas le meilleur moyen d'apprendre le C ++. De plus, le langage C ++ n’est pas le meilleur langage pour écrire un webcrawler. Les access bruts et de performances brutes que vous obtenez en C ++ sont inutiles lors de l’écriture d’un programme comme un webcrawler, qui passe le plus clair de son temps à attendre la résolution et la résolution des URL. Télécharger. À mon avis, un langage de script de niveau supérieur tel que Python ou quelque chose de mieux convient mieux à cette tâche.

Vérifiez ce robot et indexeur Web écrit en C ++ à l’ adresse : Mitza web crawler. Le code peut être utilisé comme référence. Est propre et fournit un bon départ pour un codding webcrawler. Les diagrammes de séquence peuvent être trouvés aux pages de liens ci-dessus.