[..] Fonction ineget

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

[..] Fonction ineget

#1

Message par JIF »

Bonjour, voila j'ai étudier la fonction ineget qui permet de télécharger un fichier à partir d'un serveur HTTP/FTP. Mais voila quand je mais un lien qui ne comporte pas de fichier. La fonction reste a l'infini alors que le fichier n'existe pas. J'aimerai mettre une boucle de sorte que au bout d'un certain temps la fonction s'annule et la suite du scripte continu.
Une boucle for semble le plus approprié mais comment structuré le code ?

Merci de me répondre.
Cordialement JIF,
Modifié en dernier par JIF le dim. 27 sept. 2009 13:52, modifié 1 fois.
Douves
Status : Hors ligne

Re: [..] Fonction inget

#2

Message par Douves »

pourquoi mettre un lien sans fichier? ...
Sinon, 'faut l'extention (.txt, .php, .html ect...)
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction inget

#3

Message par JIF »

Non mais ces logique que sa fait sa, car j'ai pour projet de faire une sorte de robot informatique (LEGAL) un peut comme google ou yhaoo pour faire mon propre moteur de recherche. Le robots vas donc télécharger toute les page public du net une par une pou ensuite les analyser. De sorte faire une incrémentation du style
http://a.fr
http://b.fr
http://c.fr
...etc.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Fonction inget

#4

Message par Iste »

Un rien ambitieux :lol:
Enfin, j'ai fait les tests, chez moi, en cas d'url non valide, ca renvoi une erreur et passe a la suite :/

Sinon, comme c'est assez... enfin, ca va prendre du temps, il faudra optimiser le script au maximum
D'apres ce poste, on voit que le plus rapide est d'utiliser la fonction suivante pour recup le code source

Code : Tout sélectionner

Func HTTPRequest($oMethod, $oURL, $oData = "")
    If Not IsDeclared("$oHTTP") Then $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ;on peut meme virer ca, ca ira plus vite, mais faut pas oublier de déclarer la variable au début du script
    $oHTTP.Open($oMethod, $oURL, False)
    If $oMethod = "POST" Then $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.Send($oData)
    Return $oHTTP.ResponseText
EndFunc   ;==>HTTPRequest
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction ineget

#5

Message par JIF »

Merci de ta réponse Iste, mais ou je mets l'url dans le code ?

Merci de me répondre.
Cordialement JIF,
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Fonction ineget

#6

Message par timmalos »

Code : Tout sélectionner

HTTPRequest("post", $adresse_url)
Je pense que c'est comme ça.
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction ineget

#7

Message par JIF »

Merci de ta réponse timmalos, mais sa ne fonctionne pas. Je ne sais pas ou mettre le ineget dans le code que Iste a écrit plus haut.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Fonction ineget

#8

Message par Iste »

Bah c'est une fonction, donc tu la met ou tu veux..
Apres tu l'appel, comme toute les autre fonction, et elle renvoi directement le code source de la page ;)
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction ineget

#9

Message par JIF »

Merci de ta réponse Iste mais je n'arrive pas a faire fonctionner le code.

Voici ma syntax

Code : Tout sélectionner

Func HTTPRequest($oMethod, $oURL, $oData = "")
    If Not IsDeclared("$oHTTP") Then $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ;on peut meme virer ca, ca ira plus vite, mais faut pas oublier de déclarer la variable au début du script
    $oHTTP.Open($oMethod, $oURL, False)
    If $oMethod = "POST" Then $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.Send($oData)
    Return $oHTTP.ResponseText
    InetGet("http://google.fr", "C:\Documents and Settings\Utilisateur\Mes documents\scripte\scripte en beta\le projet\page\a.html")
EndFunc   ;==>HTTPRequest
Comment remédié au problème ?

Merci de me répondre.
Cordialement JIF,
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction ineget

#10

Message par JIF »

Personne pour m'aidé ?
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Fonction ineget

#11

Message par sylvanie »

Bonjour,
D'après ce que je vois, la foction proposée se substitue à inetget :
► Afficher le texte
Là j'ai affiché le retours en msgbox, mais dans votre cas, un filewrite permettra de le stocker en fichier
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction ineget

#12

Message par JIF »

Merci de ta réponse sylvanie, j'ai fais exactement ce que tu a écrit dans le code, mais lorsque je changes l'URL dans la variable $url
il me met la même chose dans l'imputboxe et ce quelque soit le site. par contre si je met une Url non valide il ressort une erreur a la ligne 11 ereur : The requested action with this object has failed.

Merci de me répondre.
Cordialement JIF,
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Fonction ineget

#13

Message par Iste »

En effet, "The request method POST is inappropriate for the URL", GET passe plus facilement
Signez ici
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction ineget

#14

Message par JIF »

Merci de ta réponse Iste, mais je n'ai pas compris le sans de ta réponse.
je ne comprends pas pourquoi passé par httprequest. Pourquoi ne pas passé par une boucle for est au bout d'un certain temps si le scripte ne peux pas telecharger la page, sa passe a la suite du scripte ?

Merci de me répondre.
Cordialemant JIF,
JIF
Niveau 6
Niveau 6
Messages : 219
Enregistré le : mer. 04 févr. 2009 20:07
Localisation : 84
Status : Hors ligne

Re: [..] Fonction ineget

#15

Message par JIF »

Personne pour m'aidé ?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Fonction ineget

#16

Message par Iste »

Bon ! [ultra-sympa]

Presentation

La fonction HTTPRequest() que je t'ai présenté plus haut renvoi la source de la page voulue. C'est tout comme inetget(), sauf que ca n'ecris pas dans un fichier et du coup, il est au final plus rapide d'exploiter les données. C'est ce que je démontre dans le poste cité en 1er ou d'apres mes testes la fonction HTTPRequest() et 3fois plus rapide, ce qui risque de t'etre fort utile.

inetget() : écrit la source d'une page dans un fichier
HTTPRequest() : renvoi la source de la page (3x plus rapide)


Utilisation

La fonction HTTPRequest() prend 3 paramètres, dont un optionnel dont tu n'auras pas besoin. on va donc l'oublier, mais je vais quand même l'expliquer.
$oMethod : Le type de method pour récup la page. Sache simplement qu'il y en a deux, POST et GET, mais que GET est celle qui te convient le mieux. Aussi, nous mettrons toujours "GET" pour ce paramètre
$oURL : ca c'est l'url, de type http://truc.machin. c'est tout.
$oData : le paramètre optionnel, il te permet de transmettre des info a la page, mais ca c'est utile que lorsque une page php doit communiquer avec une autre page php. Nous nous venons de 'nul part', on a rien a dire, donc on ne dit rien.


Où la placer

Comme tout les autres fonction, tu la place en bas de ton code. La seule petite particularité qui peut jouer en terme de vitesse d'execution, c'est la 1er ligne :

Code : Tout sélectionner

If Not IsDeclared("$oHTTP") Then $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
Tu peux retirer cette ligne de la fonction, mais tu dois alors, avant tout appel de cette dernière, et une seule foi, déclarer cette variable en global

Code : Tout sélectionner

Global $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")

Comment l'appeler

Tres simple, il suffit de placer "GET" suivi de ton url, puis rien

Code : Tout sélectionner

$Code_Source = HTTPRequest("GET","http://mon.url")
La variable $Code_Source dans mon exemple contiendra le code source de la page en question.


Voila, j'espere que j'ai été assez claire [/ultra-sympa]
car sinon,je laisse tomber...
Signez ici
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2283
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Fonction inget

#17

Message par jchd »

JIF a écrit :Le robots vas donc télécharger toute les page public du net une par une pou ensuite les analyser.
wget me semble un brin plus adapté à cete tâche délirante.

C'était pour ça "l'incrémenation alpha-numérique"...

Fais déjà l'indexation correcte d'un site moyen !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre