IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Récupérer le code source d'une page


Sujet :

NodeJS

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Récupérer le code source d'une page
    Bonjour à tous !

    J'aimerais récupérer le code html de yahoo finances' sous format json ou même html.

    Je n'obtiens qu'une partie du code quand je lis le buffeur et quand je le parse en json, catastrophe ! Je n'ai qu'une suite de valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    var http      = require('http');
     buff = new Buffer(256);
    var getData = function(){
        http.get('http://fr.finance.yahoo.com/actualites/', function(res){
            res.on('data', function(data){
            buff +=data;
            });
     
        res.on('end', function(){
                  console.log(buff);
                  console.log(JSON.parse(buff
            });
            res.on('error', function(e){
                console.log(e);
            });
        });
    }
    getData();

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Avant d'aller plus loins dans ton code

    Pose toi la question de la légalité de cette récupération ...

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Récuperer le code source d'une page web en nodej
    j'ai essayé sur d'autres sites ça donne toujours la même chose, je pense que j'ai un problème au niveau de mon code.. car si j'arrive à visualiser le code source d'une page web , je ne voie pas pourquoi je ne peux pas le récupérer ..

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Au dela de la technique pure de code ou du site cible ...
    A mon humble avis ce que tu fais n'est pas très légal ...

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    les données sont disponibles en téléchargement libre sur différents sites
    ex: http://www.master272.com/VBA/donnees/VBA_yahoo.html
    de toute façon ne ne peux malheureusement plus modifier mon projet qui est de gréer un outil d'aide a la gestion de portefeuilles....

  6. #6
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Utilise les API proposées par Yahoo
    Il doit peut-être y en avoir d'autres payantes pour plus d'informations sûrement.

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Points : 545
    Points
    545
    Par défaut
    Salut !

    Je note 2 erreurs dans ton code !

    Tu ne peux pas concaténer 2 buffer par l’operateur +
    Tu dois utiliser la méthode statique concat du type Buffer comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buff = Buffer.concat([buff,data],buff.length+data.length);
    Ensuite la méthode parse du type l’objet JSON attend comme 1er argument un string et non pas un Buffer!
    tu doit donc le convertir comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JSON.parse(buff.toString('ascii'))
    Il faut spécifier a la méthode toString l’encodage de ta réponse HTTP , cela doit ce récupérer sur l’un des headers de la réponse

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci de ton aide , mais cela me génère encore une erreur, et même si j'essaye de lire "buff" au lieux de "copy" il y a quand même une erreur donc ce n'es pas uniquement le parse qui ne fonctionne pas mais c'est toute la procédure de récupération de donnée..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    var http      = require('http');
    var timers    = require('timers');
    var util      = require('util');
     
     
     
     var buff= new Buffer(256);
     
     
    var getData = function(){
        http.get('http://fr.finance.yahoo.com/actualites/', function(res){
            res.on('data', function(data){
    		buff = Buffer.concat([buff,data], buff.length + data.length);
            });
     
    	res.on('end', function(){
     
    			var copy = JSON.parse(buff.toString('UTF-8'));
    			  console.log(copy);
     
            });
     
            res.on('error', function(e){
                console.log(e);
            });
     
        });
    }
     
    getData();

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Points : 545
    Points
    545
    Par défaut
    Remplace buff.toString('UTF-8') par buff.toString('utf8') ! réfère toi a la doc de node

    ensuite l'url http://fr.finance.yahoo.com/actualites/ ne retourne pas du JSON mais de l'HTML, donc c'est normal que la méthode parse plante !

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Si cela renvoie une page HTML, pourquoi à l'affichage j'ai un tableau de valeurs : <Buffer 48 8b 6c ..>
    ce qu'il a d'encore plus étrange c'est que je sais que la méthode :" buff += data" ne peut pas fonctionner car le "+" n'est pas surchargé , pourtant à l'affichage j’obtiens une partie de la page que je demande ! les scripts notamment ..

  11. #11
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Points : 545
    Points
    545
    Par défaut
    lorsque l'on log un buffer dans la console cela affiche sous forme hexadécimal chaque octet de ton buffer

    perso j'obtient bien la page HTML avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    require('http').get('http://fr.finance.yahoo.com/actualites/', function(res)
    {
    	var buff= new Buffer(0);
     
    	res.on('data', function(data){
    		buff = Buffer.concat([buff,data], buff.length + data.length);
    	});
     
    	res.on('end', function(){
    		console.log(buff.toString('utf8'));
    	});
     
    	res.on('error', function(e){
    		console.error(e);
    	});
    });

  12. #12
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    moi je n'obtiens qu'une partie de la page html, les balises sont toutes collées et il manque une bonne partie du début de la page
    c'est bon ! je suis trop conne.. c'est juste qu'il fallait augmenter la taille de la mémoire tampon dans la commande du prompt

  13. #13
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    A mon humble avis ce que tu fais n'est pas très légal ...
    Une page web accessible publiquement, qu'elle soit affichée dans un browser ou traitée dans un script ça ne fait pas de différence et c'est tout à fait légal.
    Après certains sites vont bloquer des IP qui leur enverraient trop de requêtes à grande vitesse (par exemple des algos de recherche qui font des requêtes à un moteur de recherche dans une boucle). Il y a des accords particuliers pour les universités et les projets pour cette utilisation là, à négocier, mais bon je suppose que pour son cas ça ne sera pas un traitement à faire répétitivement.

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    qu'elle soit affichée dans un browser ou traitée dans un script ça ne fait pas de différence et c'est tout à fait légal
    Ah non, pas du tout !

    Le droit de consultation est une chose, mais ça ne signifie pas tous les droits sur le contenu consulté.

    C'est comme dans une bibliothèque : le fait que des livres soient consultables librement n'implique pas le droit d'appropriation, de modification, de reproduction ou quoi que ce soit de cet ordre là.

  15. #15
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 966
    Points
    3 966
    Par défaut
    le fichier robots.txt sert à donner les indications aux web crawlers

    Tu aurais des refs là dessus Bovino ?

    Et par ailleurs vous seriez pas dans le procès d'intention ?
    le fait que des livres soient consultables librement n'implique pas le droit d'appropriation, de modification, de reproduction ou quoi que ce soit de cet ordre là

  16. #16
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    C'est un peu la base de la propriété intellectuelle et du droit d'auteur...
    Pour ce qui est des références, j'en avais, mais là, j'ai pas trop le temps ni la motivation de les retrouver.
    Mais bon, en lisant le bas de page de l'URL donnée au premier message, on peut lire sans ambiguité
    En vous rendant sur le site Yahoo!, vous vous engagez à ne pas reproduire les informations publiées sur cette page.

Discussions similaires

  1. Récupérer le code source d'une page HTML
    Par phyn04 dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 24/11/2016, 15h45
  2. <mx:html> Récupérer le code source d'une page
    Par Nanard_ dans le forum Flex
    Réponses: 0
    Dernier message: 15/01/2009, 10h35
  3. Récupérer le code source d'une page Internet
    Par sango85 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/11/2008, 10h02
  4. Récupérer le code source d'une page distante
    Par audran12 dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2008, 23h23
  5. Récupérer le code source d'une page web
    Par glRaZ dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/12/2004, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo