[R] Récupérer mise en page et contenu page web (pour ini)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
plop22
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 08 févr. 2012 18:53
Status : Hors ligne

[R] Récupérer mise en page et contenu page web (pour ini)

#1

Message par plop22 »

Bonjour à tous !

Je voudrais savoir comment faire pour récupérer le contenu avec sa mise en page d'une page web

Vous allez comprendre:

J'ai une page qui affiche des infos comme dans un ini, et je voudrais récupérer ces infos afin des les enregistrer dans un ini pour mon programme (avec les retours à la ligne donc.)
Ma page m'affiche:

Code : Tout sélectionner

[FlyingDeadCow]
ip=221.135.47.123
statut=ON
password=pass'
id=6
[BalouBalou]
ip=12.28.159.212
statut=OFF
password=mdp
id=7
et le code source est:

Code : Tout sélectionner

[FlyingDeadCow]<br />
ip=221.135.47.123<br />
statut=ON<br />
password=pass'<br />
id=6<br />

    [BalouBalou]<br />
ip=12.28.159.212<br />
statut=OFF<br />
password=mdp<br />
id=7<br />

je voudrais donc réussir à garder la mise en page affichée pour directement copier dans un ini.... mais comment?????
Modifié en dernier par plop22 le mer. 02 mai 2012 18:59, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#2

Message par mikell »

Peut-être que _IEBodyReadText suffirait
Sinon :

Code : Tout sélectionner

$code = BinaryToString(InetRead(' http://mapage.etc '), 4)
; $code = FileRead("codesource.txt")
$txt = StringRegExpReplace($code, '\h|(<br />)', "")
Msgbox(0,"", $txt)
; FileWrite("code.ini", $txt)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
hilow
Niveau 2
Niveau 2
Messages : 28
Enregistré le : jeu. 05 avr. 2012 10:07
Localisation : 78/28
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#3

Message par hilow »

Je confirme : _IEBodyReadText suffit, mikell, je viens d'essayer comme ça :

Code : Tout sélectionner

#include <GUIConstants.au3>
#include <IE.au3>

Opt("GuiOnEventMode", 0)

$html = "<html><body>" & _
"[FlyingDeadCow]<br />" & _
"ip=221.135.47.123<br />" & _
"statut=ON<br />" & _
"password=pass<br />" & _
"id=6<br />" & _
"<br />" & _
"[BalouBalou]<br />" & _
"ip=12.28.159.212<br / >" & _
"statut=OFF<br />" & _
"password=mdp<br />" & _
"id=7<br />" & _
"</body></html>"

$ui = GUICreate("test", 600, 500)

$wb = _IECreateEmbedded()
GUICtrlCreateObj($wb, 10, 35, 580, 455)
_IENavigate($wb, "about&#058;blank")
_IEDocWriteHTML($wb, $html)

$cmd = GUICtrlCreateButton("GO", 10, 10, 75, 20)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $cmd
            $file = FileOpen("test.ini", 1)
            If $file = -1 Then
                MsgBox(4096, "Error", "Unable to open file")
                Exit
            EndIf

            FileWrite($file, _IEBodyReadText($wb))
            FileClose($file)

        Case $gui_EVENT_CLOSE
            Exit(0)
    EndSwitch
WEnd
 
Apparemment ça marche. Sauf, bien sûr, si tu veux pouvoir mettre à jour un ini existant qui contient ça et d'autres choses. Auquel cas, il vaut mieux passer par les fonctions de gestion d'un fichier INI une fois que tu as extrait ton texte (par exemple en en faisant un tableau par split sur le "=" de chaque ligne, puis IniWriteSection au final).
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#4

Message par mikell »

Moui j'aurais pu tester d'abord

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IECreate("file:///" & @scriptdir & "/codesource.html", 0, 0)
$txt = _IEBodyReadText($oIE)
Msgbox(0,"", $txt)
; FileWrite("code.ini", $txt)
Après, pour la gestion du ini, c'est une autre histoire
Idem si la page web contient d'autres trucs en plus des données voulues, etc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
hilow
Niveau 2
Niveau 2
Messages : 28
Enregistré le : jeu. 05 avr. 2012 10:07
Localisation : 78/28
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#5

Message par hilow »

Sinon, faire une capture écran, puis une analyse OCR :lol:
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#6

Message par mikell »

Image :roll: :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
plop22
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 08 févr. 2012 18:53
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#7

Message par plop22 »

merci beaucoup pour vos réponses et votre rapidité!

cela dit, je voudrais savoir si il est possible de faire la même chose sans devoir être dépendant de la présence d'internet explorer sur l'ordinateur ( IE.au3 est utilisable que si ie est installé c'est ça non?)

je pensait par exemple à l'udf winhttp.au3 (si vous connaissez? ) ou à autre chose...

Je vais quand meme voir de mon coté avec winhttp si on peut télécharger le code source de la page, et j'appliquerais le traitement proposé par mikell;

Code : Tout sélectionner

$txt = StringRegExpReplace($code, '\h|(<br />)', "")
et de la même manière, j'aimerais savoir comment supprimer les espaces, car il semble (allez savoir pourquoi) qu'il y ait une sorte d'alinéa de 6 espaces avant chaque nom de section (sauf le premier)

je vous tient au courant en cas de problème, et si vous connaissez une "supertechniquedelamortquitue" n'hésitez pas: je suis preneur de tout!!!!

et,

@hilow : en fait j'importerais à chaque fois dans mon ini le contenu de la page, qui elle est mise à jour (en gros il n'y as pas de modification d'un ini en local pour les mises à jour)
@mikell : la page ne contient que les infos voulues
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#8

Message par mikell »

Tss
Va pas t'embêter avec des trucs compliqués et essaie ça (ça te vire *aussi* les espaces)

Code : Tout sélectionner

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "http://mapage.etc", 0)
$oHTTP.Send()
$txt = $oHTTP.Responsetext 
$oHTTP = 0
$txt2 = StringRegExpReplace($txt, '\h|(<br />)', "")
Msgbox(0,"", $txt2)
; FileWrite("code.ini", $txt2)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
hilow
Niveau 2
Niveau 2
Messages : 28
Enregistré le : jeu. 05 avr. 2012 10:07
Localisation : 78/28
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#9

Message par hilow »

Eh bien, tout est bien qui finit bien :) C'est vrai que sans besoin de visu, c'est beaucoup plus light ; avec la mikell's method 8)

bonne_nuit($zzz)
plop22
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 08 févr. 2012 18:53
Status : Hors ligne

Re: [..] Récupérer mise en page et contenu page web (pour in

#10

Message par plop22 »

Fonctionne parfaitement!

Mais je suis chiant (pardonnez moi) mais le bon fonctionnement de ce script dépend de la présence d'internet explorer, et malheureusement, je souhaite faire un programme ne dépendant d'aucun facteur externe.

Mais vous m'avez tous les deux beaucoup aidé alors je n'abuserai pas d'avantage de votre patience et de votre temps! :lol:
Je pense que vous m'avez fourni bien assez d'éléments pour que je me débrouille seul à présent, je vous remercie!! :D

Je met résolu!




PS: quand je parlais de winhttp, je parlais de ceci: http://winhttp.origo.ethz.ch

edit:


La solution pour ceux que ça pourrait interresser (avec l'udf winhttp, sans avoir besoin de la présence de internet explorer ou autre sur le pc)

ici l'exemple est adapté pour mes tests en local

Code : Tout sélectionner

#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6

#include "WinHttp.au3"
$site = "127.0.0.1"
$txt = ""
$txt2 = ""
Opt("MustDeclareVars", 1)

; Initialize and get session handle
Global $hOpen = _WinHttpOpen()
; Get connection handle
Global $hConnect = _WinHttpConnect($hOpen, $site)
; Request
Global $hRequest = _WinHttpSimpleSendRequest($hConnect, "GET", "/COMphpmysql.php")
If @error Then
    MsgBox(0,"","error")
EndIf

; Simple-read...
Global $sRead = _WinHttpSimpleReadData($hRequest)
$txt2 = StringRegExpReplace($sRead, '\h|(<br />)', "")
Msgbox(0,"", $txt2)
FileWrite("code.ini", $txt2)
; Close handles
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Récupérer mise en page et contenu page web (pour ini

#11

Message par Tlem »

IE, fait partie intégrante de Windows, donc vous n'avez donc pas plus de problème de dépendance que la nécessité de lancer votre script dans un environnement Windows. :roll:
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é".
plop22
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 08 févr. 2012 18:53
Status : Hors ligne

Re: [R] Récupérer mise en page et contenu page web (pour ini

#12

Message par plop22 »

C'est vrai que les utilisateurs lambdas ont ie sur leur système, simplement je préfère créer quelque chose d'indépendant, "d’auto suffisant" . (c'est de la fierté personnelle :lol: )


et puis (je troll là :P ) mais si je veux le distribuer sur linux ... :mrgreen:
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Récupérer mise en page et contenu page web (pour ini

#13

Message par Tlem »

Mouais, mais si vous enlevez IE, VBScript, WMI (et surement d'autres que j'oublie) il ne vous restera plus grand chose pour vos scripts. :mrgreen:
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
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Récupérer mise en page et contenu page web (pour ini

#14

Message par mikell »

Sans compter que malgré la condamnation de Microsoft et la directive de Bruxelles sur Internet Explorer, si on vire IE, Windows risque de ne pas apprécier du tout du tout :mrgreen:

Et de toute façon chuis pas sûr que la winhttp.dll soit comprise dans Linux :wink:
Têt bin qu'il existe une linuxhttp.dll... faudrait interroger un membre de la secte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
plop22
Niveau 4
Niveau 4
Messages : 69
Enregistré le : mer. 08 févr. 2012 18:53
Status : Hors ligne

Re: [R] Récupérer mise en page et contenu page web (pour ini

#15

Message par plop22 »

je suis pas contre les autres on peut pas tout réinventer ou contourner de tout façon, mais Internet explorer c'est pour l'honneur: pas question de mettre cette m**de dans mes scripts :mrgreen: :mrgreen:
Répondre