Gratter des pages web en temps réel avec Node.js
Ce qui est un bon été à gratter le contenu du site web à l'aide de Node.js. J'aimerais construire quelque chose de très, très rapide qui permet d'exécuter des recherches dans le style de kayak.com, où une requête est envoyée à plusieurs sites différents, les résultats grattée, et retournés au client à mesure qu'ils deviennent disponibles.
Supposons que ce script doit seulement fournir les résultats au format JSON, et nous pouvons les traiter, soit directement dans le navigateur ou dans une autre application web.
Quelques points de départ:
À l'aide de node.js et jquery pour gratter des sites web
Quelqu'un a des idées?
- Je me sens comme votre deuxième lien répondu à votre propre question
- nœud.io ressemble exactement à ce que je cherche... merci!
- comme l'auteur de nœud.oi je peux témoigner de cela 😉
Vous devez vous connecter pour publier un commentaire.
Nœud.io semble prendre le gâteau 🙂
Toutes les dispositions présumer de l'exécution de l'grattoir localement. Cela signifie que vous sera très limitée dans la performance (en raison de l'exécution dans l'ordre ou dans un ensemble limité de threads). Une meilleure approche, à mon humble avis, est de s'appuyer sur un existant, quoique commerciale, de grattage de la grille.
Voici un exemple:
Ici, la récupération est effectuée à distance et un rappel est émis à votre code uniquement lorsque les résultats sont prêt (il existe également une option permettant de recueillir les résultats dès qu'ils sont disponibles).
Vous pouvez télécharger Bobik proxy client SDK à https://github.com/emirkin/bobik_javascript_sdk
J'ai fait des recherches moi-même, et https://npmjs.org/package/wscraper se définit lui même comme un
Très faible utilisation (selon npmjs.org) mais vaut le détour pour tous les intéressés.
Vous n'avez pas toujours besoin de jQuery. Si vous jouez avec le DOM retourné à partir de jsdom par exemple, vous pouvez facilement prendre ce dont vous avez besoin vous-même (en considérant que vous n'avez pas à vous soucier de xbrowser questions.) Voir: https://gist.github.com/1335009 qui n'est pas loin de prendre nœud.io à tous, juste pour dire que vous pourriez être en mesure de le faire vous-même en fonction...
Le nouveau chemin à l'aide ES7/promesses
Habituellement, lorsque vous êtes en raclant vous souhaitez utiliser une méthode de
À la fois de l'arbre, et un jeton d'analyse ont des avantages, mais l'arbre est généralement beaucoup plus simple. Nous allons le faire. Découvrez demande-la promesse, voici comment ça fonctionne:
C'est à l'aide de cheerio qui est essentiellement un léger côté serveur jQuery-esque de la bibliothèque (qui n'a pas besoin d'un objet de la fenêtre, ou jsdom).
Parce que vous êtes à l'aide de promesses, vous pouvez aussi écrire cela dans un asychronous fonction. Il va chercher synchrone, mais ça va être asynchrone avec ES7:
C'est mon facile à utiliser à des fins générales scrapper https://github.com/harish2704/html-scrapper écrit pour Node.JS
Il peut extraire des informations basées sur des schémas prédéfinis.
Un schéma de définition inclut un sélecteur css et une extraction des données de la fonction.
Il est actuellement à l'aide de plus pour les dom analyse..
découvrez https://github.com/rc0x03/node-promise-parser
Je vois la plupart des réponses sur le droit chemin avec
cheerio
et ainsi de suite, cependant une fois que vous atteignez le point où vous besoin pour analyser et exécuter JavaScript (ala SPA et plus), alors je vous découvrez https://github.com/joelgriffith/navalia (je suis l'auteur). Navalia est construit à l'appui de grattage dans un headless browser contexte, et c'est assez rapide. Merci!