Bref voici le script quasi final, il crée des ini portant le nom du mot clé, le bouton lire ouvre un
maintenant, pour choisir le ini à lire.
Le script peut naviguer sur les pages.
Seul bémol => Si par malheur, une annonce ne contient pas une seule de ses infos, par exemple une annonce ne possède pas de'ID RNA, tout le script par en cacahuète. Du coup, une annonce qui possède pas cette info, sur l'Array elle va prendre celle de l'annoce qui la suit, les infos seront décalés par rapport aux noms d'assoc. Error sur l'array "Range exceeded" le script se ferme, rideau!
Code : Tout sélectionner
[spoiler=]#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <Array.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <GuiEdit.au3>
#Include <Date.au3>
#include <Misc.au3>
#include <String.au3>
#include <WinAPI.au3>
#include <Constants.au3>
#include <ListviewConstants.au3>
#include <GuiListView.au3>
_IEErrorHandlerRegister ()
$oIE = _IECreateEmbedded ()
$GUI = GUICreate("", 640, 600)
GUISetBkColor(0x1e1e1e)
;======================================
GUICtrlCreateGroup("",5,5,200,120)
GUICtrlCreateLabel("Mots Clés",15,20,70,25)
GUICtrlSetFont(-1,12)
GUICtrlSetColor(-1,0xFFFFFF)
GUIctrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT)
$input1 = GUICtrlCreateInput("",90,20,100,20)
$bt = GUICtrlCreateButton("Chercher", 15, 50, 175, 30,$BS_DEFPUSHBUTTON)
$read = GUICtrlCreateButton("Lire", 15, 190, 50, 30)
$bar = GUICtrlCreateProgress(10,100,180,15)
$nbr_label = GUICtrlCreateLabel("",10,130,100,20)
GUICtrlSetColor(-1,0xFFFFFF)
$nbp_label = GUICtrlCreateLabel("",10,160,100,20)
GUICtrlSetColor(-1,0xFFFFFF)
$lv = _GUICtrlListView_Create($gui,"Association|N° annonce|Paru le|ID RNA|N° de parution|Région",220,10,410,200)
_GUICtrlListView_SetColumnWidth($lv,0,200)
;======================================
;IE
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 240, 640, 360)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $bt
env()
Case $msg = $read
read()
EndSelect
WEnd
Func env()
;Ouvre la page de recherche
_IENavigate ($oIE, "http://www.journal-officiel.gouv.fr/association/index.php")
;Met sur la barre de recherche la valeur lu depuis l'input
$Input_Id = _IEGetObjById($oIE, "WHAT")
_IEFormElementSetValue($Input_Id, GUICtrlRead($input1))
;Clique sur le bouton de recherche de la page web
$submit_Id = _IEGetObjById($oIE, "rechercher")
_IEAction($submit_Id, "Click")
;Attend que la page se charge (10sec)
sleep(10000)
;Lit le code source de la page en cours
$string = _IEDocReadHTML ($oIE)
;Nombre de résultats
$nbr = _StringBetween($string,"<P><STRONG>Résultat de la recherche : ", " annonce(s) </STRONG>")
;Nombre de pages
$nbp = _StringBetween($string,"<P class=pages>Page 1 /", "<SPAN class=numeros>")
;Affiche le nombre de pages et de résultats sur le GUI
GUICtrlSetData($nbr_label,$nbr[0] & " Annonce(s)")
GUICtrlSetData($nbp_label,$nbp[0] & " Pages")
;Lit les infos à partir de la page web
$assoc = _StringBetween($string,"<P>Association : <B>", "</B>")
$num_annonce = _StringBetween($string,"<P>No d'annonce : <B>", "</B>")
$pau = _StringBetween($string,"Paru le : <B>", "</B>")
$id_RNA = _StringBetween($string,"<P>Identification R.N.A. : <B>", "</B>")
$num_paru = _StringBetween($string,"No de parution : <B>", "</B>")
$region = _StringBetween($string,"Département (Région) : <B>", "</B>")
;25 résultats par page
for $i = 1 to 25
IniWrite(@ScriptDir & "\"& GUICtrlRead($input1),$assoc[$i-1],"num_annoce",$num_annonce[$i-1])
IniWrite(@ScriptDir & "\"& GUICtrlRead($input1),$assoc[$i-1],"paru",$pau[$i-1])
IniWrite(@ScriptDir & "\"& GUICtrlRead($input1),$assoc[$i-1],"id_RNA",$id_RNA[$i-1])
IniWrite(@ScriptDir & "\"& GUICtrlRead($input1),$assoc[$i-1],"num_paru",$num_paru[$i-1])
IniWrite(@ScriptDir & "\"& GUICtrlRead($input1),$assoc[$i-1],"region",$region[$i-1])
Next
;Navigue dans les pages
For $i= 2 to $nbp[0]
_IENavigate ($oIE, "http://www.journal-officiel.gouv.fr/association/index.php?ctx=eJyLz2FIK2KIL8tjSCwuzk9miC9kSMwsKs5PK1FIzi8qyC9KLEnVLylKTbVSCskvUGKIz8gscSvNyWEwMmUAAG3jE!U_&page="&$i&"&WHAT="&guictrlread($input1)&'"')
;Lit le code source de la page en cours
$string = _IEDocReadHTML ($oIE)
;Lit les infos à partir de la page web
$assoc = _StringBetween($string,"<P>Association : <B>", "</B>")
$num_annonce = _StringBetween($string,"<P>No d'annonce : <B>", "</B>")
$pau = _StringBetween($string,"Paru le : <B>", "</B>")
$id_RNA = _StringBetween($string,"<P>Identification R.N.A. : <B>", "</B>")
$num_paru = _StringBetween($string,"No de parution : <B>", "</B>")
$region = _StringBetween($string,"Département (Région) : <B>", "</B>")
;25 résultats par page
for $i = 1 to 25
IniWrite(@ScriptDir & "\" & GUICtrlRead($input1),$assoc[$i-1],"num_annoce",$num_annonce[$i-1])
IniWrite(@ScriptDir & "\" & GUICtrlRead($input1),$assoc[$i-1],"paru",$pau[$i-1])
IniWrite(@ScriptDir & "\" & GUICtrlRead($input1),$assoc[$i-1],"id_RNA",$id_RNA[$i-1])
IniWrite(@ScriptDir & "\" & GUICtrlRead($input1),$assoc[$i-1],"num_paru",$num_paru[$i-1])
IniWrite(@ScriptDir & "\" & GUICtrlRead($input1),$assoc[$i-1],"region",$region[$i-1])
Next
Next
EndFunc
Func read()
$file = FileOpenDialog("Ouvrir une BD",@ScriptDir, "All (*.*)")
If Not @error Then
$nb_assoc = IniReadSectionNames($file)
For $i = 1 to $nb_assoc[0]
_GUICtrlListView_AddItem($lv,$nb_assoc[$i])
_GUICtrlListView_AddSubItem($lv,$i-1,iniread($file,$nb_assoc[$i],"num_annoce",""),1)
_GUICtrlListView_AddSubItem($lv,$i-1,iniread($file,$nb_assoc[$i],"paru",""),2)
_GUICtrlListView_AddSubItem($lv,$i-1,iniread($file,$nb_assoc[$i],"id_RNA",""),3)
_GUICtrlListView_AddSubItem($lv,$i-1,iniread($file,$nb_assoc[$i],"num_paru",""),4)
_GUICtrlListView_AddSubItem($lv,$i-1,iniread($file,$nb_assoc[$i],"region",""),5)
Next
EndIf
EndFunc
[/spoiler]
je travaille avec son array.