Récupérer les données d'une page web

Récupérer les données d'une page web - HTML/CSS - Programmation

Marsh Posté le 25-03-2024 à 17:33:54    

Bonjour,
 
Je poste ici car j'imagine que ça concerne de près ou de loin le HTML.
 
Je souhaiterais, dans le cadre d'un projet de plus long terme et plus large, savoir récupérer les données d'une page web.
De manière générale, pour remplir ce besoin, quel est l'outil le plus simple à utiliser ?
 
Dans le détail, j'ai principalement deux types de pages à savoir lire.
- Des pages qui ressemblent en somme à HFR, puisqu'il y a un tableau découpé en plusieurs pages, l'idée serait évidemment de récupérer toutes les données du tableau sans faire défiler à la main les pages une par une.
- Une page qui schématise un calendrier là aussi il faut cliquer sur chaque événement pour en avoir les détails, et je cherche à avoir les détails de l'événement.
 
Je suis motivé pour apprendre la manière de faire ça, mais par où commencer ? Quel langage ou outil devrais-je utiliser pour le faire ?
 
J'ai souvent utilisé excel VBA pour de la programmation simple. Récemment j'ai utilisé python pour un petit projet.
Je suis prêt à changer d'environnement s'il y en a qui serait complètement adapté.
 
Merci pour votre aide

Reply

Marsh Posté le 25-03-2024 à 17:33:54   

Reply

Marsh Posté le 25-03-2024 à 17:36:33    

Première question: Tu as l'autorisation du proprio du site web concerné?


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 25-03-2024 à 17:52:01    

Eventuellement je pourrais le demander, mais ce qui est certain c'est que ce sont des données qui me sont accessibles (et qui me concernent d'ailleurs directement). Je ne parle pas de hacking ici.
 
Question plus générale : faut-il une autorisation pour récupérer des données automatiquement dont l'accès nous est autorisé ?
Autrement dit, j'ai un tableau de chiffres que je peux librement lire, copier coller, pourquoi me faudrait-il une autorisation pour le faire automatiquement ? Tout ce que ça change c'est que ça sera plus rapide de le faire pour moi.


Message édité par Laska- le 25-03-2024 à 17:52:11
Reply

Marsh Posté le 25-03-2024 à 17:54:13    

Je ne suis pas juriste, mais généralement l'accès automatique par des scripts etc est interdit dans le CGU. Il faut voir au cas par cas.

 

EDIT: C'est pour une seule fois où un truc que tu veux actualiser régulièrement?


Message édité par rat de combat le 25-03-2024 à 17:54:54

---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 25-03-2024 à 17:59:18    

L'une des pages serait à récupérer une fois par an environ.
L'autre s'actualiserait idéalement une fois par jour. Mais c'est une page que je consulte manuellement plusieurs fois par jour (voire plusieurs dizaines de fois par jour) donc mes requêtes même automatisées ne devraient pas perturber quoi que ce soit en face.
 
Et je sais que ça a été autorisé pour d'autres personnes dans la même situation que moi, qui faisaient la même chose, donc pour moi la question est vraiment plus technique que juridique :)
 
Je commence par tenter des choses manuellement, à terme j'aimerais bien avoir un site perso qui serait capable d'héberger tout ce que je fais en matière d'informatique, et qui pourrait me présenter le résultat de sa requête du jour quand j'irai me connecter sur ce site depuis un smartphone par exemple.


Message édité par Laska- le 25-03-2024 à 18:00:34
Reply

Marsh Posté le 25-03-2024 à 18:02:12    

Bon, laissons le droit aux juristes...
 
Tu veux faire du scraping je crois qu'on appelle ça. Si tu as déjà fait du Python (3) tu peux continuer avec ça, c'est un language très, très répandu. Après il faudra trouver une bibliothèque prête à l'emploi pour gérer le HTML récupéré et en sortir ce que tu veux, sinon tu vas vite déchanter si tu tentes à la main. De mémoire - je ne fais pas de Python - il y a "BeautifulSoup" ou du genre.


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 25-03-2024 à 18:04:53    

Effectivement ça n'a l'air vraiment pas facile.
 
J'ai vu autre chose, quand j'utilise le clic droit et "inspecter" directement sur la page, à l'endroit voulu, j'arrive dans la partie développeur, le code html de la page s'ouvre, et je vois la donnée que je veux récupérer qui apparait dans le code ! Mais pas moyen de copier coller ce code html pour tenter de récupérer la donnée moi-même :o
 
Effectivement je viens de voir que beautifulsoup pouvait faire des choses.
 
Tu t'en es douté, les données que je veux se cachent derrière des identifiants, donc il faut que je trouve un moyen de donner au code python mes identifiants maintenant.

Reply

Marsh Posté le 25-03-2024 à 18:13:44    

Il faut distinguer deux choses:
-récupérer le HTML
-en faire quelque chose / extraire les données
 
La première chose peut se faire avec une bib' adaptée en Python ou même en ligne de commande avec curl p.ex. C'est pas ça la partie compliquée (normalement :o ).


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 25-03-2024 à 18:28:36    

Effectivement ça n'a pas l'air simple.
J'ai réussi à me connecter sur le premier site, mais l'option la plus basique ne fait que récupérer le contenu de ce qui s'affiche quand on utilise le raccourci control+U
HFR c'est un site "simple" donc le texte s'affiche dans le corps du code html.
Mais là ce sont des sites compliqués et le code est très court, et seule l'option inspect donne réellement les données écrites.

Reply

Marsh Posté le 25-03-2024 à 18:37:10    

Ah, ça doit être des pages générés côté client avec du Javascript. Tu vas t'amuser...
 
Faudrait voir si y'a pas une API dédiée pour récupérer les infos, sinon...


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 25-03-2024 à 18:37:10   

Reply

Marsh Posté le 25-03-2024 à 19:25:29    

Ca reste du domaine du faisable ?  
Mes données sont simples et reconnaissables, pour la page concernée.
 
Si je pouvais télécharger le code DOM (document object model?) je pourrais probablement retrouver ce qu'il me faut avec du code qui cible directement la bonne partie.


Message édité par Laska- le 25-03-2024 à 19:26:24
Reply

Marsh Posté le 25-03-2024 à 20:23:20    

Le DOM/HTML est généré par du JS. Il faut soit une lib' Python qui sait faire ça (simuler tout un navigateur avec Javascript, bon courage) soit voir du côté des appels que fait le Javascript (AJAX) et utiliser ces derniers. Mais après faut vraiment l'autorisation du proprio si on commence à trifouiller dans les requêtes "internes" etc.


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 27-03-2024 à 13:40:24    

Salut Laska-. Ca fait plaisir de te voir ici :) J'imagine que c'est en rapport avec ton métier, ton besoin ?
Effectivement, faudrait te renseigner s'il n'existe pas une API accessible. Ca simplifierait les choses. Sinon, si c'est un site en JS, tu vas t'amuser : avec les outils du développeur de ton navigateur (FF ou Chrome), il te faudra inspecter les requêtes XHR (Ajax) pour voir les paramètres envoyées à des urls et ce que ça retourne (en général, du JSON ou du HTML, éventuellement du XML).
 
A tout hasard, tu pourrais nous dire quel site tu veux scraper ? Par mon métier, je le connais peut-être (contact en MP si tu veux ;)).
 
Il te faudra apprendre les bases du HTML pour comprendre le DOM. Ensuite un langage comme Python ou PHP, ça le fera, les 2 ont des libs pour manipuler le DOM et faire des requêtes au serveur. Armes-toi quand même de patience...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-03-2024 à 23:25:54    

ne maîtrisant pas le code, j'ai eu l'occasion d'extraire des données de site web avec power automate.
selon la structure du site, c'est très facile ou pas adapté, mais c'est peut-être à tenter ?
une démo ici par exemple : https://www.youtube.com/watch?v=DgBZiBIgh3w

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed