' automate capture iran par firefox selon: http://antiguide.free.fr/wiki/wakka.php?wiki=WgetPagesJavascript ' http://result-p.moi.ir/Portal/Home/default.aspx ' définition du dossier cible (doit exister au lancement, et plutôt vide) cible="%userprofile%\Desktop\2013-a\" Set WshShell =CreateObject("WScript.Shell") Set oArgs=WScript.Arguments ' tableau d'arguments nbargs= oArgs.Count ' nombre d'argument transmis if nbargs=1 then cible=oArgs(0) & "\" elseif nbargs=0 then msgbox "Pour exécuter ce programme, vous devez lui fournir le dossier cible" & vbcrlf & _ "par exemple en 'draguant' l'icone de ce dossier sur son icône" wscript.quit else msgbox "Erreur fatyale: reçu plus d'un argument " & vbcrlf & _ "Pour exécuter ce programme, vous devez lui fournir le dossier cible" & vbcrlf & _ "par exemple en 'draguant' l'icone de ce dossier sur son icône" wscript.quit end if set fs=createobject("scripting.filesystemobject") ' paramètres "fixes" nblipa=50 nbco=7 repetsave=20 ' délais delayc=50 ' entre caractères delaytab=100 delaynext=100 delayload=5000 ' chargement de la page delerepe=1000 delaytop=5000 ' temps pour se repositionner en haut de pge après dialogue ' andiamo! debli=inputbox ("Hello," & vbcrlf & "déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & "puis entrez les limites des lignes à capturer sous la forme: depart-stop/dernier " & vbcrlf & _ "(debut doit être la page actuelle) " & vbcrlf & _ "Enfin faites un clic gauche sur le bouton 'Ok' et aussitôt un clic gauche sur le titre de la page. ", _ "Définir les lignes à capturer" ) '125 ' if debli="" then wscript.quit end if derder="" sep=instr(debli,"/") if sep>0 then derder=mid(debli,sep+1) debli=mid(debli,1,sep-1) end if sep=instr(debli,"-") if sep=0 then msgbox "fallait debut-fin !" wscript.quit end if derli=mid(debli,sep+1) if derder="" then derder=derli debli=mid(debli,1,sep-1) deb=int((debli+nblipa-1)/nblipa) fin=int((derli+nblipa-1)/nblipa) derpage=int((derder+nblipa-1)/nblipa) lonpa=len(fin) wscript.sleep(delaytop) on error resume next totale=cible & deb & "-" & debli & "--" & fin & "-" & derli & ".txt" if fs.fileexists (totale) then while fs.fileexists (totale) rep=msgbox ("le fichier à créer:" & vbcrlf & totale & vbcrlf & "existe déja; effacez le!" & vbrlf & "Puis clic sur OK suivi de clic en haut à droite de la page" ,1) if rep=2 then wscript.quit wend wscript.sleep(delaytop) end if on error resume next set fo=fs.createtextfile(totale) if err.number <>0 then msgbox "erreur fatale creation " & vbcrlf & totale wscript.quit end if on error goto 0 logname=cible & deb & "-" & debli & "--" & fin & "-" & derli & ".log" if fs.fileexists (logname) then while fs.fileexists (logname) rep=msgbox ("déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & _ "le fichier à créer:" & vbcrlf & totale & vbcrlf & "existe déja; effacez le!" & vbrlf & "Puis clic sur OK suivi de clic en haut à droite de la page" ,1) if rep=2 then wscript.quit wend wscript.sleep(delaytop) end if set fl=fs.createtextfile(logname) agarder=false for page=deb to fin nom=cible & right("000" & page, lonpa) & "-" & (page*nblipa-nblipa+1) & ".txt" wscript.sleep(1000) ' sauvegarde txt if fs.fileexists (nom ) then while fs.fileexists (nom ) rep=msgbox ("déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & _ "le fichier à créer:" & vbcrlf & nom & vbcrlf & "existe déja; effacez le!" & vbrlf & "Puis clic sur OK suivi de clic en haut de la page" ,1) if rep=2 then wscript.qui wend wscript.sleep(delaytop) end if fl.writeline now & " sauvegarde " & nom wshshell.sendkeys "%F" wscript.sleep(1000) wshshell.sendkeys "E" wscript.sleep(1000) ' fichier wshshell.sendkeys "%N" wscript.sleep(1000) une nom ' envoyer la demande de sauvegarde wshshell.sendkeys "%E" wscript.sleep(1000) todo=repetsave reussi=fs.fileexists (nom ) ' (et insister!) while (not reussi) and (todo>0) todo=todo-1 fl.writeline now & " repetition " & repetsave-todo wshshell.sendkeys "%E" wscript.sleep(delerepe) reussi=fs.fileexists (nom ) wend if not fs.fileexists (nom ) then while not fs.fileexists (nom ) rep=msgbox ("déplacez cette fenêtre pour positionner le bouton 'OK' sur le titre de la page web" & vbcrlf & _ "le fichier: " & nom & vbcrlf & "n'a pas été créé; effectuez la sauvegarde manuellement!" & vbcrlf & _ "Puis clic sur OK suivi de clic en haut dela page" ,1) if rep=2 then wscript.quit wend wscript.sleep(delaytop) end if set fi=fs.opentextfile(nom) li=0 li50=0 ignorer=true while ignorer and not fi.atendofstream lu=fi.readline ' fl.writeline "avance " & lu li=li+1 if li=12 then if mid(lu,1,len(derder))<>derder then rep=msgbox ("erreur fatale: " & vbcrlf & _ "Nombre de lignes du tableau lu en tete: ===" & mid(lu,1,len(derder)) & "<>espéré:" & derder& "===") wscript.quit else ignorer=false end if end if wend if fi.atendofstream then msgbox "erreur fatale pas trouvé la ligne en-tete " & derder wscript.quit end if lu=fi.readline for lu50=1 to nblipa prochaine="" for col=1 to nbco if fi.atendofstream then msgbox "erreur fatle fichier de moins de " & nblipa & " entrées." wscript.quit end if lu=fi.readline dump="" for id=1 to len(lu) dump=dump & " " & asc(mid(lu,id,1)) next 'id 'fl.writeline lu50 & " " & col & " =!!!==" & lu & "=!!!==" & dump & "==!!!==" if col=1 then sep9=instr(lu,chr(9)) if sep9=0 then msgbox "erreur fatale pas tab" else nuact=mid(lu,1,sep9-1) end if end if if 0+nuact>=0+debli then agarder=true ' fl.writeline now & " lu50=" & lu50 & " nuact=" & nuact & " debli=" & debli & " a garder" end if li=li+1 ' msgbox "lu ligne utile lu50=" & lu50 & " col=" & col & vbcrlf & lu dump="" for xx=1 to len(lu) x1=mid(lu,xx,1) dump=dump & " " & xx & ":" & asc(x1) next ' xx ' msgbox "un score:" & len(li) & vbcrlf & li & " " & lu & vbcrlf & dump if col=1 then finnu=instr(lu,chr(9)) if finnu=0 then msgbox lu & vbcrlf & "pas de numero en tete de ligne ====" & derli & "====" & numlia & "=====" & vbcrlf & lu wscript.quit end if numlia=mid(lu,1,finnu-1) ' numli=numlia+0 expl="" if page=deb then expl="RAPPEL: firefox doit être positionné sur la page de la première ligne à capturer" theorique=(page-1)*50+lu50 & " " theorique=mid(theorique,1,len(theorique)-1) ' msgbox "numlia=" & numlia & "= numli=" & numli &"===" & "théroique=" & theorique & " finnu=" & finnu if numlia <> theorique then msgbox "lu50=" & lu50 & vbcrlf & _ "erreur fatale, sur la page: " & vbcrlf & nom & vbcrlf & "ligne du tableau: " & lu50 & vbcrlf & _ "numli trouvé ===" & numlia & "===<>espéré:===" & theorique & "===" & vbcrlf & lu & vbcrlf & expl wscript.quit end if end if ' col=1 if agarder then prochaine=prochaine & lu ' fo.write lu if col" if page>=1 then tab=16 if page>=2 then tab=18 if page>=11 then tab=19 'msgbox "derpage=" & derpage if page>=1+10*int(derpage/10) then tab=8+derpage-10*int(derpage/10) ' msgbox "tab=" & tab end if for x=1 to tab wscript.sleep(delaytab) wshshell.sendkeys "{tab}" next ' pause pour voir le ">" wscript.sleep(delaynext) wshshell.sendkeys "{enter}" ' attente plus que nécessaire pour le chgt de page wscript.sleep(delayload) next sub une (liste) for i=1 to len(liste) un=mid(liste,i,1) wscript.sleep delayc wshshell.sendkeys un next end sub