Page 2 sur 2
Re: [..] Script sur des fichiers
Posté : lun. 24 oct. 2011 16:42
par DCVolo
Non pas vraiment en fait.
une ligne ou le pseudo est écrit ça donne ceci :
<b><a href="admin_users.php?mode=edit&u=166&rci=f9ec0e461ed1802ae8abd9e3c86d3064" >gRaph</a></b>
ou ceci
<b><a href="admin_users.php?mode=edit&u=2&rci=f9ec0e461ed1802ae8abd9e3c86d3064" style="color:#FFA34F"><b>LegenD</b></a></b>
gRaph et LegenD sont les deux pseudo à recuperer
Le fichier fait plusieurs milier de lignes, pour l'instant avant d'utiliser la BDD je voudrais simplement que les pseudo soient rangés ( un pseudo par ligne).
Re: [..] Script sur des fichiers
Posté : lun. 24 oct. 2011 18:03
par mikell
DCVolo a écrit :gRaph et LegenD sont les deux pseudo à recuperer
Heu c'était pas possible comme ça ?
Code : Tout sélectionner
$list = ""
$object = ObjCreate("InternetExplorer.Application")
$object.navigate($adresse)
$oLinks = $object.document.links
For $oLink In $oLinks
If StringInStr($oLink.href, "admin_users.php?mode=edit") Then $list &= $oLink.innerText
Next
MsgBox(0, "", $list)
Re: [..] Script sur des fichiers
Posté : lun. 24 oct. 2011 18:25
par DCVolo
Non, je veux recuperer ces données via un fichier. Et pour IE j'ai déjà expliqué que par exemple moi je n'ai plus IE. Désolé d'être casse pied ^^
Le nombre de pseudo a recuperer n'est pas fixe, parcontre forcement le nombre de mail a recuperer = le nombre de pseudo récupéré.
Ces deux lignes sont des exemples mais les caractères peuvent varier après le u=
Le plus simple serai de recuperer chaque ligne ( toute la ligne ) contenant :
<b><a href="admin_users.php?mode=edit&u=
d'enregistrer chacune de ces lignes dans un fichier texte encore une fois ligne par ligne. De faire la même chose avec les e-mails dans un autre fichier texte.
puis ensuite de supprimer les caractères inutiles autour du pseudo qui est contenu à chaque fois entre ces balises >$pseudo< puis de supprimer ces deux caractères.
pour l'e-mail <div><a href="mailto:
email@email.com"> pareil avec le caractère "
le tout en sauvegardant bien le resultat du vrai pseudo et du vrai e-mail dans un ou deux fichiers qui serviront ensuite à recreer la BDD.
Donc devant ce système de recherche, je suis couché...
Re: [..] Script sur des fichiers
Posté : lun. 24 oct. 2011 18:48
par mikell
DCVolo a écrit : Et pour IE j'ai déjà expliqué que par exemple moi je n'ai plus IE.
Avec ça plus besoin d'IE... ça s'adapte au nombre variable de pseudos et ça renvoie aussi le nombre de pseudos et les adresses mail
Code : Tout sélectionner
$object = ObjCreate("Shell.Explorer.2")
$object.navigate($adresse)
$oLinks = $object.document.links
For $oLink In $oLinks
If StringInStr($oLink.href, "admin_users.php?mode=edit") Then $list &= $oLink.innerText
If StringInStr($oLink.href, "mailto") Then $mail &= StringTrimLeft($oLink.href, 6)
Next
DCVolo a écrit :Non, je veux recuperer ces données via un fichier.
C'est pour faire une sauvegarde ? rien n'empêche de crér un fichier à côté avec les données récupérées...
Re: [..] Script sur des fichiers
Posté : lun. 24 oct. 2011 19:34
par PandiPanda
Ou ceci? certe c'est moche, et améliorable *1000 par des StringRegEx() mais c'est fonctionnel
► Afficher le texte
Code : Tout sélectionner
#Include <String.au3>
Local $test='<b><a href="admin_users.php?mode=edit&u=166&rci=f9ec0e461ed1802ae8abd9e3c86d3064" >gRaph</a></b>'&@CRLF& _
'<b><a href="admin_users.php?mode=edit&u=2&rci=f9ec0e461ed1802ae8abd9e3c86d3064" style="color:#FFA34F"><b>LegenD</b></a></b>'
Local $test2='<b><a href="admin_users.php?mode=edit&u=166&rci=f9ec0e461ed1802ae8abd9e3c86d3064<div><a href="mailto:PandaTest1@email.com">'&@CRLF& _
'<b><a href="admin_users.php?mode=edit&u=2&r<b><a h'&'<div><a href="mailto:PandaTest2@email2.com"> '
Local $usename=_Username($test)
Local $mail=_Mail($test2)
FileWrite(@ScriptDir&"\pseudo.txt",$usename)
FileWrite(@ScriptDir&"\mail.txt",$mail)
Func _Username($source)
Local $array=_StringBetween($source,'href="admin_users.php','/')
Local $str=""
For $i=0 To UBound($array)-1
Local $array2=_StringBetween($array[$i],'>','<')
For $j=0 To UBound($array2)-1
If StringRegExp($array2[$j],"\w") Then $str&=$array2[$j]&@CRLF
Next
Next
Return $str
EndFunc
Func _Mail($source)
Local $array=_StringBetween($source,'href="mailto:','">')
Local $str=""
For $i=0 To UBound($array)-1
$str&=$array[$i]&@CRLF
Next
Return $str
EndFunc
Re: [..] Script sur des fichiers
Posté : mar. 25 oct. 2011 11:52
par DCVolo
C'est pas si moche que ça pour moi =)
Je vais passer quelques heures sur le pc aujourd'hui à voir comment ameliorer ton script avec des StringRegEx pour la recherche dans le fichier de plusieur milier de lignes et copier le resultat de la ligne dans un autre fichier et ensuite ton script va reutiliser ces lignes pour supprimer l'inutile.
Merci beaucoup.
Re: [..] Script sur des fichiers
Posté : mar. 25 oct. 2011 18:59
par DCVolo
Moi parcontre j'ai quelque chose de non fonctionnel a faire verifier ^^
Code : Tout sélectionner
#include <file.au3>
$file5 = "C:\blablabla\Backup\admin_userlist.php.htm"
$CountLines = _FileCountLines($file5)
$rechercherlignemail = StringRegExp ($file5, '<div><a href="mailto:.*">',0 )
$rechercherlignepseudo = StringRegExp ($file5, '<b><a href="admin_users.php?mode=edit&u=.*</b>',0 )
$lignemailretourneun =
$ligneduspeudoretourneun =
func _recherche()
while 1
if $rechercherlignemail = 1 Then
FileWriteLine("C:\blablabla\Backup\Mails.txt", $lignemailretourneun)
EndIf
if $lignepseudo or $lignemail = 1 Then
FileWriteLine("C:\blablabla\Backup\Pseudos.txt", $ligneduspeudoretourneun)
EndIf
WEnd
EndFunc
for FileReadLine ($file5 , 0) to ($file5 ,$CountLines)
_recherche()
next
le truc là dans ce code c'est recuperer la ligne sinon je pense qu'il est bon?

non ?
Re: [..] Script sur des fichiers
Posté : mar. 25 oct. 2011 22:09
par mikell

Code : Tout sélectionner
for FileReadLine ($file5 , 0) to ($file5 ,$CountLines)
_recherche()
next

Re: [..] Script sur des fichiers
Posté : mar. 25 oct. 2011 22:55
par DCVolo
M**** pourtant je l'ai dans mon code ce filereadline en moins ici ^^
sinon comme je suis trop fort j'ai fait ça aussi :
Code : Tout sélectionner
$file5 = "C:\blablabla\Backup\admin_userlist.php.htm"
$rechercherlignemail = StringRegExp ($file5, '<div><a href="mailto:.*">',0 )
$rechercherlignepseudo = StringRegExp ($file5, '<b><a href="admin_users.php?mode=edit&u=.*</b>',0 )
$file = FileOpen($file5, 0)
if not FileExists ("C:\blablabla\Backup\Mails.txt") And not FileExists ("C:\blablabla\Backup\Pseudos.txt") Then
FileWrite ("C:\blablabla\Backup\Mails.txt", "")
FileWrite ("C:\blablabla\Backup\Pseudos.txt", "")
EndIf
; Check if file opened for reading OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
;MsgBox(0, "Line read:", $line)
FileReadLine("C:\blablabla\Backup\Mails.txt", $rechercherlignemail)
FileReadLine("C:\blablabla\Backup\Pseudos.txt", $rechercherlignepseudo)
Wend
FileClose($file)
Ah si si y'a pas d'erreur, mais sa fonctionne pas pour autant
Faut reperer la ligne qui contient le patern dans une variable et enregistrer la ligne complete dans un fichier.
J'vais finir completement dingue xD