[R] Automatisation telechargement pdf depuis code source

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

[R] Automatisation telechargement pdf depuis code source

#1

Message par JulienBoul »

Bonjour à tous,

Je me lance dans un projet pour lequel je n'ai clairement pas le niveau. Je m'y lance car il me permettra de grandir, et je pense que c'est long, mais pas forcément compliqué. Autant je pense connaitre les principales instructions (je les ai utilisées dans d'autres codes) que je devrais utiliser pour générer mon script, autant j'ai un gros problème d'organisation, de méthodologie et de chronologies des actions à mener.

Je souhaite télécharger les pdf d'un site web. Ce sont des vues éclatées ou notices de produits électroménager, libres de droits. Ce script m'évite de solliciter chaque fournisseur, de renommer les fichiers qu'il me communique etc.
Pour chiffrer un peu l'ampleur du nombre de fichiers à télécharger, on a 713 marques comportant de 0 à 3000 fichiers.
L'objectif est de télécharger, renommer et classer sur mon bureau.
Puis-je communiquer l'url sur ce post de façon à ce que ça serve à chacun? l'ennui, c'est que je fais ça à titre professionnel, et j'ai peur que si le site web se rend compte qu'on lui a pompé ses infos, il le prenne mal... J'avais pensé l'envoyer en MP peut être?

J'ai commencé à ordonner un peu les dossiers sur mon bureau et comprendre les pièges que présente l'automatisation (les cas particuliers etc), et une image parle mieux qu'un long discours.
architecture dossiers projet pdf.png
Etes vous motivé par le projet? Pensez vous ma méthodologie cohérente? Vaut il mieux travailler sur le code source? Sur la page web directement en ouvrant chaque page produit? Dois je plutôt télécharger le code source en txt ou travailler directement en mémoire vive dans le clipboard?

Je précise que quand je lancerai le script au final, j'ai la possibilité de lui dédier un poste donc si ça prend plusieurs jours, c'est pas grave, je veux juste que ce soit fiable.

Voici également un bout de code "modifié" afin que vous voyiez la structure du code source. Les expressions régulières ou le "_StringBetween" seront d'une grande aide.

Code : Tout sélectionner

<tr class="tr-hover"><td><a style="display: block; line-height: 1.6em" href="marque-[$MARQUE]-reference-[$REF1]+[$REF2]+[$REF3].htm">[$MARQUE] [$REF1] [$REF2] [$REF3]</a></td><td><span class="tr-hover-categorie">Four</span></td><td class="phone-hidden"><img src="img/vueeclatee.png" height="15" /> <a href="http://pdf.[siteweb].fr/[$MARQUE] [$REF1] [$REF2] [$REF3].pdf">Vue éclatée</a></td><td class="phone-hidden"></td></tr><tr class="tr-hover"><td><a style="display: block; line-height: 1.6em" href="marque-[$MARQUE]-reference-00151555HDDW00S+857941501001+[$REF3].htm">[$MARQUE] 00151555HDDW00S 857941501001 [$REF3]</a></td><td><span class="tr-hover-categorie">Hotte</span></td><td class="phone-hidden"><img src="img/vueeclatee.png" height="15" /> <a href="http://pdf.[siteweb].fr/[$REF3] 00151555HDDW00S 857941501001.pdf">Vue éclatée</a></td><td class="phone-hidden"></td></tr>
Ce code est recopié jusque 3000 fois consécutivement avec différentes références de pièces.

Voilà, j'ai la page blanche, si vous avez un conseil de structure, de squelette et de fonctions à utiliser pour que je ne m'éparpille pas, je suis preneur.
Modifié en dernier par JulienBoul le jeu. 27 oct. 2016 11:44, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#2

Message par Tlem »

Bonsoir Julien.
Au début de votre message, vous dites que les PDF sont libres de droits, puis plus loin vous dites "J'ai peur qui si le site Web se rend compte qu'on lui a pompé ses Infos, il le prenne mal" !

Si les documents sont libres de droits, tout le monde peut les télécharger, donc à moins qu'il ne soit stipulé explicitement dans le règlement du site qu'il est interdit de télécharger de manière automatisée les documents hébergé, vous ne devriez pas avoir de problème.

Maintenant, si c'est un site pro, je doute que cela soit toléré ou autorisé. ^^

Envoyé de mon appareil mobile avec Tapatalk
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#3

Message par JulienBoul »

Bonjour Tlem,

"Toute reproduction intégrale ou partielle de ce site est interdite, sauf si [ENTREPRISE] donne son autorisation expresse et préalable."

J'ai commencé à écrire un message plein de bon sens et indiquant que c'était libre de droit mais j'ai lu cette mention avant de poster ma réponse. Je la reformule donc.

A mon sens, ces Pdf (origine fournisseur) sont libre de droits. Le contenu (création par le site web) du site, lui, ne l'est pas. Mais a-t-on le droit de s'approprier des documents dont on est pas le créateur? Je rappelle que ce sont les fabriquants qui les fournissent, nous avons nous même la possibilité de nous les fournir, et c'est généralement en accès libre sur les sites fournisseurs. Juste pas envie de me taper 700 codes pour chercher les PDF chez tous mes fournisseurs ^^.
Le seul intéret de les prendre sur ce site, c'est la qualité du classement de ceux-ci, la standardisation du code qui me permet de les télécharger en masse, et leur nommage qui comporte MARQUE+ref, etc. Je reste persuadé que la mension apposée n'est pas légale, et que même si elle est légale, ne sera pas invoquée car les documents ne portent aucune mention et que je vais les renommer moi même, d'autant plus que c'est destiné à un usage interne... Comment prouver qu'ils n'émanent pas du site Fournisseur plutôt?...
Franchement, ça me dit pas trop que le sujet tourne autour de la question légale/éthique. Je comprend qu'avant de s'engager à aider quelqu'un on puisse s'assurer de ses intentions, après franchement, et c'est la toute ma question, peut on réellement s'approprier les documents que donne un fournisseur? C'est un peu comme si je crééait un site de diffusion de cerfa de l'état et que je décidais de les vendre car j'en facilite l'accès... C'est dans ce sens que le coté éthique est discutable non?...

Je manque peut être de modestie mais je trouve le projet super sympa et complet, y'a d'la manipulation de Code, de dossiers sur PC, de l'incrémentation de variables dynamiques ($marque001, $marque002),de belles fonctions à utiliser, les regex, des boucles dans des boucles, etc. Bon, de mon coté, j'ai créé mes dossiers pour le moment, en suivant la structure proposée dans l'image de mon post précédent.
En tout cas j'espère que le fondement de l'existance de nombreux forums reste la pédagogie et l'entraide (pour moi et les générations futures qui s'inspireront de notre réflexion) et qu'on aura un beau cas d'école sur ce topic.

Mes questions initiales restent de mise, y'a plusieurs étapes dans le but que je poursuit, ça va me faire grandir, et je serais ravi que certains d'entre vous m'épaulent dans mon cheminement.

Julien.

PS: je t'envoie en MP le site du grossiste pour que tu puisses avoir accès aux CGU. Tu me diras ce que tu penses de leurs conditions. Pour ma part, je pense leur clause abusive, mais on arrivera jamais là car il leur faudrait prouver qu'on a pompé les pdf chez eux et pas ailleurs. je t'invite également à en ouvrir un, tu verras que le contenu est neutre. D'autre part, on les fait manger, ils nous embéterons pas avec ça, juste que je veux rien leur devoir car service rendu implique un service en retour. Puis y'a l'aspect challenge, c'est ça avant tout qui me motive !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#4

Message par jchd »

Julien : MP !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
amphase
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mar. 30 août 2016 00:28
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#5

Message par amphase »

Bonsoir Julien,
En ce qui concerne l'aspect légal du projet, dans le cas peu probable où tu n'obtiendrais pas une réponse directe sur ce forum, puisqu'il s'agit de SAV, il s'agit de consommation : la DGCCRF devrait être compétente au moins pour t'aiguiller vers la bonne personne.
Je n'ai pas compris ce qui te retenait de révéler publiquement l'URL du site concerné. Si l'accès en est public, en quoi est-ce confidentiel ?
En supposant le côté juridique surmonté, je connais 3 approches pour extraire les données :
  • OutWit Hub, application commerciale, la version démo est bridée à 100 importations par session.
  • HtmlAgilityPack.dll, Open Source, utilisée par les récalcitrants aux RegEx, peut-être pilotée par AutoIt en ligne de commandes. Je n'ai jamais essayé.
  • AutoIt et RegEx, tu es au bon endroit. :) Personnellement, j'ai besoin de plus de données pour élaborer une quelconque stratégie d'extraction.
En attendant la suite, pour ce qui concerne la classe de caractères interdits dans le nom des fichiers Windows :
$sCheminOrthodoxe = StringRegExpReplace($sCheminLouche, '[\/:|*?"<>]', '_')
Ne trouves-tu pas qu'elle a une bonne tête, cette instruction ? ;)

À bientôt.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#6

Message par jchd »

Oui, ou wget tout simplement !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#7

Message par Tlem »

Bonsoir Julien,
En ce qui me concerne, vous pouvez télécharger toute la toile si le cœur vous en dit, cela ne me dérangera pas outre mesure, mais sachez qu'Internet n'est pas un lieu ou tout est permis (et heureusement). Il existe des lois et parfois, sans le savoir, une action que l'on pense sans conséquence peux couter très cher. ^^

Le site dont vous faites allusion a effectué un travail et probablement payé des employés et/ou des ressources il est donc normal qu'il ne souhaite pas qu'on lui "vole" ce travail (et c'est son droit).
Je ne vous empêche pas de travailler sur un outil qui vous permettra de récupérer l'ensemble des PDF de ce site, je vous conseil simplement de faire attention et de prendre toutes les mesures qui s'imposent pour éviter des ennuis pour de simple PDF.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#8

Message par jchd »

Julien,

Tu ne lis pas tes MP ? (MP = "Messages Privés", en haut à droite de cette page)
Contacte-moi, je suis vivement intéressé.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#9

Message par JulienBoul »

amphase a écrit :Bonsoir Julien,
En ce qui concerne l'aspect légal du projet, dans le cas peu probable où tu n'obtiendrais pas une réponse directe sur ce forum, puisqu'il s'agit de SAV, il s'agit de consommation : la DGCCRF devrait être compétente au moins pour t'aiguiller vers la bonne personne.
Je n'ai pas compris ce qui te retenait de révéler publiquement l'URL du site concerné. Si l'accès en est public, en quoi est-ce confidentiel ?
En supposant le côté juridique surmonté, je connais 3 approches pour extraire les données :
  • OutWit Hub, application commerciale, la version démo est bridée à 100 importations par session.
  • HtmlAgilityPack.dll, Open Source, utilisée par les récalcitrants aux RegEx, peut-être pilotée par AutoIt en ligne de commandes. Je n'ai jamais essayé.
  • AutoIt et RegEx, tu es au bon endroit. :) Personnellement, j'ai besoin de plus de données pour élaborer une quelconque stratégie d'extraction.
En attendant la suite, pour ce qui concerne la classe de caractères interdits dans le nom des fichiers Windows :
$sCheminOrthodoxe = StringRegExpReplace($sCheminLouche, '[\/:|*?"<>]', '_')
Ne trouves-tu pas qu'elle a une bonne tête, cette instruction ? ;)

À bientôt.

Salut amphase,

Il s'agit du site SOGEDIS.
Comme expliqué précédement, l'aspect juridique me semble surmonté. C'est l'avis de plusieurs personnes avec qui j'ai communiqué par MP.
Quoi qu'il en soit, le week end me laissant le temps de réfléchir au risque/intérêt du projet, je trouve que le challenge vaut le risque, c'est super intéressant coté programmation d'essayer de prendre ces pdf.
Comme le dit Tlem, Sogedis a payé des personnes pour gérer la base de donnée. C'est un modèle économique comme un autre. Pour ma part, ma boite me paye pour être apporteur de solution, et me laisse choisir mes outils. Je préfère utiliser Autoit de façon intelligente et seul, que payer 10 bonhommes pendant 1 mois pour mettre à jour les BDD.
J'ai un peu envie de dire que ce sont deux modèles qui s'affrontent, le modèle payant, en brutforce (je donne les billets pr un résultat), et le modèle libre de droit avec collaboration, réflexion et recherche.

L'aspect technique m'intéresse très particulièrement.
AUTOIT. A mon sens, c'est le plus polyvalent et le plus complet des logiciels de codage. Il permet de tout configurer, et j'aurai le plaisir de l'avoir fait de mes propres mains. De plus, après la création de ce script, j'aurai le plaisir de m'y replonger pour réutiliser certains aspects de code etc, c'est vraiment trop bien cet aspect. Surmonter des problèmes, les résoudre, et utiliser ce savoir pour réfléchir plus rapidement la fois suivante.

Donc, si ça tente certains d'entre vous, l'idée serait avant toute chose de parler stratégie. Comment peut on à partir ce cette url http://pieces-detachees.sogedis.fr/marque-WHIRLPOOL.htm télécharger l'ensemble des PDF (des autres marques également) qui nous concernent? J'ai travaillé sur une extraction des Marques du site et l'ai dans un fichier excel en colonne.

Déjà, je suis habitué de chrome. Faut il utiliser IE afin d'utiliser l'udf correspondante comme on me l'a suggéré en Mp?
Avez vous différents scénarios pour l'écriture du script?
J'ai déjà créé mes dossiers (structurés comme dans l'image de mon premier post) de façon un peu brutale ->

Code : Tout sélectionner

DirCreate("C:\Users\bl49491\Downloads\"&$Nom_Racine&"\Base_Marques\ADLER")
DirCreate("C:\Users\bl49491\Downloads\"&$Nom_Racine&"\Base_Marques\ADMIRAL")
car je n'ai pas réussi a incrémenter des variables dynamiques un peu comme ça (le code marche pas mais c'est pour comprendre la logique)->

Code : Tout sélectionner

$001="ADLER"
$002="ADMIRAL"
$variable= $n+1
DirCreate("C:\Users\bl49491\Downloads\"&$Nom_Racine&"\Base_Marques\"&$variable&$n)
Si vous avez un bout de code pour ceux qui passeront sur le topic...

J'espère savoir prendre le temps cette après midi pour m'y replonger, et désolé si je met qqs jours pour répondre, je suis pas mal pris en ce moment (c'est pour ça que j'préfère partir sur une bonne stratégie et une bonne architecture de mon code, ça me fera pas perdre de temps).
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#10

Message par JulienBoul »

Voici mon code façon brute (berk) pour le moment.
Quant on regarde mes premières variables, c'est de ça que je parle lorsque je parle de variables dynamiques.
Avoir un code du style "for i = 001 to 713" et avoir une boucle qui tourne en ajoutant +1 à chaque variable de manière à faire tourner les marques.
Ca serait méga propre.
Sinon on peut travailler directement depuis une lecture du fichier xls en prenant:
variable i+1=Excel A1
boucle
variable i+1=Excel A2
boucle
...

Je peux fournir la liste des marques par MP si ça intéresse.
Sinon elle est dans le code source de l'url de la page d'accueil.

Code : Tout sélectionner

#RequireAdmin
#include <file.au3>

#Region Marques
$marque001="ADLER"
$marque002="ADMIRAL"
#EndRegion Marques

$Nom_Racine = "Projet_PDF"
If @error Then
    MsgBox(0, "", "Le dossier de log n'a pas pu être créé")
    Exit
EndIf
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine)
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Globale")
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques")

#Region Creation Marques
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADLER")
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADMIRAL")
#EndRegion

#Region Creation Marques_Notices
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADLER\NOTICES")
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADMIRAL\NOTICES")
#EndRegion

#Region Creation Marques_eclatees
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADLER\VUES_ECLATEES")
DirCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADMIRAL\VUES_ECLATEES")
#EndRegion

#Region Creation Marques_codesource.txt
_FileCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADLER\code_source.txt")
_FileCreate("C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADMIRAL\code_source.txt")
#EndRegion

#Region Téléchargement du code source
InetGet("http://pieces-detachees.sogedis.fr/marque-ADLER.htm","C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADLER\code_source.txt",0,0)
InetGet("http://pieces-detachees.sogedis.fr/marque-ADMIRAL.htm","C:\Users\JulienBoul\Downloads\"&$Nom_Racine&"\Base_Marques\ADMIRAL\code_source.txt",0,0)
#EndRegion

;------------------------------------------------------------
;--- 100 secondes = 713 Fichiers, 2 141 Dossiers, 54,3 Mo ---
;------------------------------------------------------------
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#11

Message par orax »

Ce code récupère le nom des marques et le nom du fichier HTML correspondant. Les dossiers sont créés d'après cette liste.
#include <file.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <Array.au3>

$Nom_Racine = "Projet_PDF"
$Racine = @UserProfileDir & "\Downloads\" & $Nom_Racine
ConsoleWrite("Racine = " & $Racine & @CRLF)

DirCreate($Racine & "\Base_Marques")
DirCreate($Racine & "\Base_Globale")

; on pourrait aussi utiliser InetRead()
InetGet("http://pieces-detachees.sogedis.fr/marques.htm", "marques.htm")
$html = FileRead("marques.htm")
$array = StringRegExp($html, '(?i)<div class="marque"><a href="([^"]+)">([^<]+)</a>', $STR_REGEXPARRAYGLOBALMATCH)
_ArrayDisplay($array) ; <= avant

; crée un tableau sous la forme :
; *------------------------------------------------------*
; | nom de la marque | nom du fichier HTML correspondant |
Global $marques[UBound($array) / 2][2]
$j = 0
For $i = 0 To UBound($array) / 2 - 1
   $marques[$i][0] = $array[$j + 1]
   $marques[$i][1] = $array[$j]
   $j += 2
Next
_ArrayDisplay($marques) ; <= après

#Region Creation Marques
For $i = 0 To UBound($marques) - 1
   DirCreate($Racine & "\Base_Marques\" & $marques[$i][0])
Next
#EndRegion Creation Marques
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
amphase
Niveau 3
Niveau 3
Messages : 40
Enregistré le : mar. 30 août 2016 00:28
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#12

Message par amphase »

Indien vaut mieux que deux tu l’auras (pas).
Squaw déplumée
Hugh Julien !

Je constate qu’orax, qui code plus vite que son ombre, a profité de mon absence du forum pour poster un script irréprochable accompagné d’explications concises. Comme j’avais déjà préparé le mien, je le poste quand même. Tu auras des explications double et ça te coûtera un peu plus cher, mais au moins, tu es sûr de comprendre.

Malgré une souris douloureuse et des scripts en attente, je n’ai su résister à démonter la simplicité de la solution.
Tu as tout à fait raison en te refusant à payer 10 bonhommes pendant 1 mois pour mettre à jour les BDD alors qu’il te suffit d’en rémunérer très grassement deux (maintenant trois, avec orax), pendant deux heures seulement, pour que la mise à jour se fasse automatiquement.
Pour une BdD conséquente comme celle-ci, SQL semble l’outil le plus adapté. Ce n’est pas ma tasse de thé, mais il y a un grand Maître, jchd, qui sévit quelquefois ici. Le plus difficile consiste à l’attraper, mais tu as réussi cet exploit.

En ce qui me concerne, je vais t’épauler pour la première partie, la capture des fichiers PDF. Cela dit, je n’ai pas saisi la façon dont tu souhaiterais (idéalement) exploiter les données, mais bien que cela concerne plus la seconde partie, je préfère les voyages où la destination est annoncée.
C’est donc un peu à l’aveugle que je te fournis, ci-dessous, mes préconisations (poil au Fillon). Qu’est-ce que j’entends par là ? Par là, rien. Mais on pourrait bien y retrouver quelques plumes de la squaw (à défaut des grottes).
  • [1]- Extraire toutes les marques (qui t’intéressent – c’est là, le manque d’infos) que propose le site.
    [2]- Aller à la page de chaque marque.
    [3]- Extraire les URL des fichiers PDF dans la page.
    [4]- Les télécharger et les classer selon (à nouveau, manque d’infos).
Le script né dans la douleur de ma souris effectue les opérations 3 et 4 avec la page Whirlpool.

Pour l’opération 2, sois perspicace (ou fils) et jette ton regard perçant (comme le chat) à l’URL de la page ; alors tu constateras que les adresses ont une partie constante avant et après la marque (qui est la seule variable).
http://pieces-detachees.sogedis.fr/marque-WHIRLPOOL.htm
http://pieces-detachees.sogedis.fr/marque-PHILIPS.htm
http://pieces-detachees.sogedis.fr/marque-AEG.htm

En ce qui concerne les expressions régulières, en ligne 14 :
(?<=href="http://pdf\.sogedis\.fr/) recherche le préfixe ‘href="http://pdf\.sogedis\.fr/’ sans l’inclure dans la capture
[A-Z\d.\s]+ (n’importe quelle lettre majuscule, nombre, point ou espace) répété une fois ou plus
\.pdf la chaîne de caractères .pdf
(?=">Vue\s) recherche le suffixe ‘">Vue ’ sans l’inclure dans la capture
En ligne 26, j’ai ajouté les espaces aux caractères interdits dans '[\/:|*?"<>\s]' ; s’il n’y en a pas dans le chemin complet, ça peut éviter d’avoir ensuite à jongler avec les guillemets simples et doubles.
#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Opt("MustDeclareVars")

Local $sURL_Whirlpool = "http://pieces-detachees.sogedis.fr/marque-WHIRLPOOL.htm"

TrayTip("Téléchargement en cours", "Import des URL des pdf", 30) ; informe
Local $sPage_Whirpool = BinaryToString(InetRead($sURL_Whirlpool, 1), $SB_UTF8) ; lit la page dans une variable après conversion en texte
If $sPage_Whirpool = "" Then Exit MsgBox($MB_TOPMOST, "Erreur : " & @error, "Impossible de lire la page" & @CRLF & @CRLF & $sURL_Whirlpool)
TrayTip("", "", 1)

Local $aNom_Vues = StringRegExp($sPage_Whirpool, '(?<=href="http://pdf\.sogedis\.fr/)[A-Z\d.\s]+\.pdf(?=">Vue\s)', $STR_REGEXPARRAYGLOBALMATCH) ; extrait les adresses des fichiers pdf dans un tableau

;~ _ArrayDisplay($aNom_Vues, "Liste des pdf à importer") ; curiosité touristique avec vue éclatée

Local $sDirPath = @ScriptDir & "\Oeufs_de_Whirpool"; création d'un panier pour y mettre ses...
Local $bErrFlag = DirCreate($sDirPath) ; ...fichiers capturés
If $bErrFlag <> 1 Then MsgBox($MB_TOPMOST, "Erreur : " & @error, "Erreur lors de la création du répertoire")

Local $sURL_Vues = "" ; variable dans laquelle sera reconstruite l'URL

For $i = 0 To UBound($aNom_Vues) - 1
   $sURL_Vues = "http://pdf.sogedis.fr/" & $aNom_Vues[$i] ; reconstruit l'URL
   $aNom_Vues[$i] = StringRegExpReplace($aNom_Vues[$i], '[\/:|*?"<>\s]', '_') ; remplace les caractères de noms de fichier illicites (s'il y en a, je n'en ai pas vu) et espaces par underscore '_'
   TrayTip("Téléchargement en cours", $aNom_Vues[$i], 10) ; informe
   InetGet($sURL_Vues, $sDirPath & "\" & $aNom_Vues[$i]) ; télécharge un fichier après l'autre (un seul à la fois)
Next

TrayTip("", "", 1)

Run("explorer.exe " & $sDirPath) ; et voilà le travail !

MsgBox($MB_TOPMOST, "Tiens donc !", "Ce site est mensonger puisqu'il y a " & UBound($aNom_Vues) & " appareils et non 3143 comme annoncé !") ; on aurait pu également extraire 3143, mais là c'est du luxe
Edit1
Je viens de lire en détail le script d'orax. Nous n'avons pas posté la même chose. Il a écrit les points 1 et 2, moi c'est 3 et 4. La vie est belle...
Edit2
Je viens de relire mon propre script pour voir comment articuler les deux et l'ai nettoyé d'une ligne de contrôle oubliée.
JulienBoul
Niveau 4
Niveau 4
Messages : 82
Enregistré le : ven. 04 déc. 2015 13:55
Status : Hors ligne

Re: [..] Automatisation telechargement pdf depuis code source

#13

Message par JulienBoul »

Ha ouai.... Heu, bonjour pour commencer, j'vais essayer d'organiser mes idées et de synthétiser.

Vous m'avez bluffé. je ne m'attendais pas à avoir un code si court :-/

Le coup de l'array pour modifier mes variables, j'étais sur la piste mais bien écrit et fonctionnel, ça change tout. Je réutilise pour créer mes sous dossiers, mes fichiers provisoires et de log.

Bon, j'me suis amusé à télécharger l'ensemble des documents sur une marque, puis, déployé mon code pour passer sur chaque marque.

Quand, lorsque j'ai eu matière (les PDF) et que j'ai commencé à imaginer une façon de les exploiter. La, surprise, les codes pièces sont des références internes. Il me reste deux choix, soit créer une table des équivalences pour les quelques dizaines de milliers de fichiers téléchargés, soit trouver un autre moyen.

Cet autre moyen existe. Il s'agit d'un logiciel d'entreprise ultrasécurisé, sans aucun control possible dans l'interface, du style, pas de "tab", "enter" ou aucun raccourci classique ne fonctionne. L'interface n'est pas authentifiable par autoit info...

Donc je pars sur une autre méthodologie (je vais ouvrir un topic concernant la modification du code de fichier provisoire (extension non conventionnelle), qui consiste à mixer du mouseclick, du pixelsearch et qui manipule windows et pdf creator. Ca va pas être très beau, mais autant on avait quelques dizaines de milliers de fichiers sur Sogedis, autant là, en gros, c'est le fournisseur de Sogedis sur lequel je vais m'attarder, donc il a mille fois plus d'infos. Je ne m'y était pas attardé plus tot car c'est un logiciel (pas d'url possible etc) super protégé et je voyais pas l'intérêt de m'y attarder si c'était similaire à ce projet là. En réalité, sur ce nouveau fournisseur, je vais pouvoir mettre en parallèle les annotations des vues éclatées et les références fournisseur officielles.

Voilà, c'était un peu pour fixer le contexte. Je suis ravi d'avoir trouvé solution facile pour le cas sogédis, j'me suis sauvegardé le système de array lorsque j'aurai variable dynamique.

J'ai également adoré le roleplay dont a fait preuve amphase, tu as une elle écriture en plus d'avoir un raisonnement bien construit, c'est un plus dans le milieu un peu geek très orienté techniques appliquées plutôt que littérature.

En tout cas j'espère que les personnes qui liront le topic à l'avenir pourront s'en servir, j'ai pour ma part peur que le titre ne soit pas suffisamment explicite, qu'en pensez-vous? En attendant, je passe avec un immense plaisir en Résolu, et continue mes investigations de mon côté pour télécharger mes fichiers en lien avec mes listing de pièces.

Merci en tout cas, je m'attendais pas à clôturer si vite le sujet !!

Julien.
Répondre