Comment automatiser une tâche répétitive sur le web.

Répondre
Partager Rechercher
C'est tout bête mais je ne trouve pas comment faire.

Admettons www.sitelambda.com
Ce sitelambda.com présente des milliers de projets.
Quand on clique sur un projet, on ouvre la page du projet, par exemple le projet J0L, vous arrivez sur www.sitelambda.com/J0L.
Sur chaque page projet, vous avez un lien vers un descriptif du projet, lien qui renvoie par exemple www.JOL.com/descriptif.

Comment puis-je générer une liste des liens vers les descriptifs des projets dans un fichier texte sans avoir à me copier-coller à la main les milliers de lien ?
C'est peut-être un peu overkill, mais il y a Puppeteer qui pourrait convenir : https://pptr.dev/ et le github : https://github.com/puppeteer/puppeteer

Ca permet d'automatiser des tâches répétitives, entre autres, au sein d'une ou plusieurs pages web.

Ca se prend en main assez rapidement, je m'en étais servi pour faire un petit script qui déclenchait un process lorsqu'un élément dans une page web était modifiée.
Citation :
Publié par Jean Sébastien Gwak
C'est peut-être un peu overkill, mais il y a Puppeteer qui pourrait convenir : https://pptr.dev/ et le github : https://github.com/puppeteer/puppeteer

Ca permet d'automatiser des tâches répétitive, entre autre, au sein d'une ou plusieurs page web.

Ca se prend en main assez rapidement, je m'en étais servi pour faire un petit script qui déclenchait un process lorsqu'un élément dans une page web était modifiée.
Je ne suis pas certain de réussir à utiliser un truc pareil, mais j'ai peut-être un ou deux contacts pouvant m'y aider. Merci pour cette piste.
Citation :
Publié par Ron J. Douche Doré
Je ne suis pas certain de réussir à utiliser un truc pareil, mais j'ai peut-être un ou deux contacts pouvant m'y aider. Merci pour cette piste.
Il y a aussi Selenium IDE qui propose le même genre de chose, mais en version plus friendly si on peut dire. (C'est plus visuel, plus "clickodrome")

J'avais moins aimé perso, mais ça te conviendra peut-être plus.

https://www.selenium.dev/

L'extension Chrome :
https://chrome.google.com/webstore/d...balphokd?hl=fr
Citation :
Publié par Ron J. Douche Doré
Je ne suis pas certain de réussir à utiliser un truc pareil, mais j'ai peut-être un ou deux contacts pouvant m'y aider. Merci pour cette piste.
+1 sur puppeteer, c'est du headless browser, ça se pilote avec un nodejs très facilement. Au pire tu me contacte sur discord.
Ce qui est bien, c'est que tu peux coder ton script node, le foutre dans une lambda AWS, et que tu paieras "à la tâche", donc tu maîtrises les coûts.
A voir mais ce besoin me fait penser directement à du rpa. Tu peux essayer uipath si les propositions précédentes ne te satisfont pas.
La version community est gratuite et c'est un outil plutôt puissant dont la prise en main est pas trop compliquée.
Citation :
Publié par --------------------------------------------------
En facile a utiliser et graphique, Sikuli marchait bien. Je ne sais pas si c'est encore maintenu par contre.

https://sikulix-2014.readthedocs.io/...sual-workflows
Il semblerait que ce soit encore maintenu. Le github si besoin : https://github.com/RaiMan/SikuliX1
Je trouve que les solutions qu'on te proposent plus haut sont overkill et non adaptés.

Ton but ce n'est pas vraiment d'automatiser un copier/coller mais de récupérer des informations sur des pages précises, donc au lieu de demander a un bot de faire les 3000 clics et copier coller à ta place, je ferais plutôt un bout de code qui va directement chercher les informations que tu désires

Tu choppe d'abord tous les liens qui t'intéressent, tous les "projets" dans ton exemple, tu peux parser ça en javascript avec un
Code:
var array = [];
var links = document.getElementsByTagName("a");
for(var i=0, max=links.length; i<max; i++) {
    array.push(links[i].href);
}

Tu as une liste de toutes les balises href (lien) que tu peux filtrer avec une bonne regex selon la structure de ton site
Dans un second temps, tu dois ouvrir chaque page, mais tu ne va pas t'embêter a ouvrir réellement les 3000 liens, tu laisse le navigateur faire ça en tâche de fond, tu n'as pas besoin visuellement de voir la page se charger
Code:
for(var i=0; i< array.length; i++) {
    var req = new XMLHttpRequest();  
    req.open('/GET', array[i], false);   
    req.send(null);  
    if(req.status == 200)  
       parse_url_projet(req.responseText);
}
Voila, tu as toutes tes pages dans la variable ci-dessus, il n'y a plus qu'a faire la fonction de parsing de la page pour que tu puisse récupérer l'url, tu peux utiliser la même méthode de parsing employé plus haut en la customisant pour cette fois ci récupérer les liens que tu désires.

A la fin, y'a plus qu'a enregistrer le résultat dans un fichier.
Et enfin, tu peux faire tout ça en ouvrant la console javascript de ton navigateur et en lui collant le code, sans devoir installer quoi que ce soit, ça implique néanmoins de savoir coder un tout petit peu mais ce n'est pas sorcier si tu arrives a comprendre les petits bout de code ci-dessus, il faut juste savoir l'adapter à ton site
Thumbs up
Citation :
Publié par Hakkai
Je trouve que les solutions qu'on te proposent plus haut sont overkill et non adaptés.

Ton but ce n'est pas vraiment d'automatiser un copier/coller mais de récupérer des informations sur des pages précises, donc au lieu de demander a un bot de faire les 3000 clics et copier coller à ta place, je ferais plutôt un bout de code qui va directement chercher les informations que tu désires

Tu choppe d'abord tous les liens qui t'intéressent, tous les "projets" dans ton exemple, tu peux parser ça en javascript avec un
Code:
var array = [];
var links = document.getElementsByTagName("a");
for(var i=0, max=links.length; i<max; i++) {
    array.push(links[i].href);
}

Tu as une liste de toutes les balises href (lien) que tu peux filtrer avec une bonne regex selon la structure de ton site
Dans un second temps, tu dois ouvrir chaque page, mais tu ne va pas t'embêter a ouvrir réellement les 3000 liens, tu laisse le navigateur faire ça en tâche de fond, tu n'as pas besoin visuellement de voir la page se charger
Code:
for(var i=0; i< array.length; i++) {
    var req = new XMLHttpRequest();  
    req.open('/GET', array[i], false);   
    req.send(null);  
    if(req.status == 200)  
       parse_url_projet(req.responseText);
}
Voila, tu as toutes tes pages dans la variable ci-dessus, il n'y a plus qu'a faire la fonction de parsing de la page pour que tu puisse récupérer l'url, tu peux utiliser la même méthode de parsing employé plus haut en la customisant pour cette fois ci récupérer les liens que tu désires.

A la fin, y'a plus qu'a enregistrer le résultat dans un fichier.
Et enfin, tu peux faire tout ça en ouvrant la console javascript de ton navigateur et en lui collant le code, sans devoir installer quoi que ce soit, ça implique néanmoins de savoir coder un tout petit peu mais ce n'est pas sorcier si tu arrives a comprendre les petits bout de code ci-dessus, il faut juste savoir l'adapter à ton site
Bonjour super ton alternative
J'ai compris ton premier bout de code qui permet de récupérer les éléments html que tu souhaite et de les passer dans un tableau
Par contre je ne comprends pas comment fonctionne le deuxième morceau de code
Comment tu fais et ou tu passe l'URL pour accéder à la page souhaiter et récupérer les informations de tes éléments html
Et comment lancer ça dans la console sans utiliser de framework
Si tu as un exemple par exemple
Je te remercie @Hakkai
Tu peux ouvrir la console javascript de ton navigateur (habituellement ctrl+shift+j) et y mettre directement ton code Javascript
112649-1658426035-2814.png

Pour le second bout de code, le XMLHttpRequest(); est une requête AJAX qui va te permettre d'aller interroger une page web sans que ton code se retrouve bloqué, tu recevras la réponse dans la variable responseText quand la page sera chargée, il ne te restera plus qu'a faire ton traitement dans la fonction parse_url_projet comme par exemple filtrer l'url et la stocker dans un tableau que tu sauvegarderas par la suite
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés