Partage
  • Partager sur Facebook
  • Partager sur Twitter

Collecter globalement des données sur site web

Data : comment procéder ?

    22 décembre 2014 à 17:04:22

    Bonjour,

    Pour un mémoire de recherche, je cherche un moyen, probablement algorithmique, de collecter systématiquement certaines données dans les contenus publiés sur des sites web. En l'occurence, des sites web de (petits) médias, qui consistent en des centaines de pages d'articles mis en ligne. 

    Plus précisément, ces données, ce sont — pour chaque article — le titre, la rubrique, et éventuellement les mots clefs connexes (qui apparaîssent dans un certain type de balises dans le code source). L'idée est de rassembler tous les titres et dans un deuxième temps d'aller y chercher les occurences principales.

    En clair, je cherche à collecter des données exploitables pour les mettre en forme ensuite dans des tableurs et des tableaux statistiques

    Ces données sont visibles et accessibles depuis chaque article sur chaque site, mais impossibles à collecter à la main si je me base sur un échantillon de pages web qui se chiffre en puissances de dix. C'est donc une démarche en data, qui vise à amasser une quantité d'informations pachydermique — amas de données évidemment trop énorme pour être traité ou catalogué à la main.

    Ci-dessous (sur le site du Monde.fr) il s'agirait de récolter le titre et la rubrique "Santé". Simple exemple, je vise de plus petits médias qui ont moins de contenu et qui ne publient pas 100 articles par jour. 

    N'ayant pas un accès immédiat aux bases de données des sites web concernés, je me demandais si vous connaîtriez une façon de faire ? S'il existe un service, logiciel, code algorithmique à faire tourner, qui balaye toutes les pages publiées et récolte systématiquement ces informations dans un format exploitable pour ensuite quantifier et qualifier le résultat.  

    Merci d'avance pour tout retour.

    -
    Edité par aboutperl 22 décembre 2014 à 17:08:59

    • Partager sur Facebook
    • Partager sur Twitter
      22 décembre 2014 à 23:09:51

      As-tu regardé si les petits médias mettent à disposition un flux RSS ? C'est fait pour ça.

      • Partager sur Facebook
      • Partager sur Twitter
        23 décembre 2014 à 11:16:14

        C'est le cas. Mais je cherche à remonter jusqu'au premier article publié, est-ce qu'un flux rss s'y prête vraiment ?

        Il m'a toujours semblé qu'un flux rss démarrait l'archivage peu ou prou à partir de l'instant où l'on s'y est abonné via un agrégateur.

        Mais si oui, comment faire pour remonter jusqu'à l'instant t0, et comment compiler et exploiter les données agrégées en se basant sur le flux rss ? 

        • Partager sur Facebook
        • Partager sur Twitter
          23 décembre 2014 à 12:02:50

          Aïe, non, les flux RSS proposent généralement les N derniers articles. A toi ensuite de les conserver où bon te semble.

          Après, y'a deux questions différentes :

          1/ Comment remonter jusqu'à t0 :

          Ca risque d'être très compliqué. Tu peux "crawler" le site et le fouiller à la recherche d'article. Note que si le site est bien conçu tu vas vite te faire dégager (code HTTP 429 : too many requests), en règle général les sites n'aiment pas trop qu'on les "aspire" méchamment.

          Dans la pratique, on fat ce genre de trucs avec un navigateur embarqué, c'est-à-dire un navigateur (comme Chrome) piloté par un script (dans le langage de ton choix). Selenium, par exemple, est une bibliothèque qui permet de faire ce genre de choses. En gros tu vas dire (coder) : "va à l'adresse XXXXX, regarde tous les liens dans la boîte de droite, clic sur chacun d'entre eux, lis le titre et les métadonnées (qui se trouve dans les "meta" de la page, et dans la petite boite grise en bas à gauche) et sauvegarde moi ça dans un fichier". Ca risque d'être long : à coder d'abord, à exécuter ensuite. Et comme je l'ai dit, certains sites "banissent" les crawlers.

          Solution 2 : tu peux demander directement aux sites en question s'ils disposent d'une API. Il s'agit d'une interface qu'ils ouvrent au public pour leur permettre d'effectuer des requêtes (des recherches par exemple, ou récupérer des listes d'items, ou obtenir des informations sur un item en particulier). Twitter par exemple, expose une API qui permet de récupérer les derniers tweets d'une personne, ses flux, etc. C'est pour cela qu'il existe autant de clients Twitter différents. S'ils proposent une API, alors tu devras écrire un programme qui interrogera cette API pour récupérer les données que tu souhaites. N'importe quel langage de programmation te permettra de le faire.

          2/ Comment exploiter les données Là, c'est à toi de voir :

          • comment tu stockes les données
          • ce que tu appelles "les exploiter" (agréger suivant certains critères ?)

          Ca peut être un programme qui fait ça, tu peux aussi utiliser une base de données pour y stocker les données récupérées et interroger ladite base de données pour créer ce qu'on appelle des "reports" (à l'aide d'un ETL par exemple).

          Je n'ai pas connaissance de solution "préconçue" permettant de faire ce que tu recherches, pour moi c'est assez spécifique et demande du développement. J'espère cependant que tu trouveras ce que tu recherches.

          • Partager sur Facebook
          • Partager sur Twitter
            23 décembre 2014 à 14:08:01

            Merci, déjà, pour le détail.

            Pour le crawler, effectivement, ça risque d'être fastidieux à coder. D'autant que mes compétences en codage sur le web se sont effondrées en flèche à force de ne pas pratiquer. 

            Malgré tout, la solution de l'API me paraît plus réaliste à mon niveau. Je vais aller dans ce sens, en faisant une démarche auprès des services en question. 

            Mais je vais en tout cas me heurter à l'obstacle du développement, dirait-on. Même si j'ai quelques restes, connaîtrais-tu à tout hasard un tuto qui explique comment procéder pour lancer des requêtes sur un formulaire de recherche/une API, et récolter sélectivement des données pour les stocker de façon ordonnée ? Je pense que l'algorithme en lui-même ne causera pas de souci ; je peine juste à me représenter comment le structurer pour le balancer sur une page web et en extraire des données.

            Par "les exploiter", je signifie en effet en tirer des résultats statistiques agrégés en compilant les données, relevant des occurences, le nombre d'apparition de mots clefs, etc, après les avoir ordonnées dans des tableurs. Si elles sont bien stockées, ce sera simple. J'ai quelques outils pour ça.

            Je reste à l'affût d'autres solutions, si jamais. 

            -
            Edité par aboutperl 23 décembre 2014 à 14:09:54

            • Partager sur Facebook
            • Partager sur Twitter

            Collecter globalement des données sur site web

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown