[...] http request
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
azerty2699
- Niveau 3

- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
[...] http request
Bonsoir,
Je cherche un moyen de faire une requête http afin d'accéder au contenu d'une page web et l'afficher, pour faire une recherche google par exemple.
Pour l'instant je ne sais que récupérer le code source d'une page web sans accéder à l'intérieur.
Merci de votre aide.
Je cherche un moyen de faire une requête http afin d'accéder au contenu d'une page web et l'afficher, pour faire une recherche google par exemple.
Pour l'instant je ne sais que récupérer le code source d'une page web sans accéder à l'intérieur.
Merci de votre aide.
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [...] http request
Je ne comprends pas ce que tu veux dire par accéder à l'intérieur.
http://autoitscript.fr/forum/viewtopic. ... it=WinHTTP Voir l'exemple de PandiPanda avec winhttp.winhttprequest, ou le mien plus loin avec _WinINet* ; même si je doute que ça puisse correspondre à ta demande... Ces exemples permettent de faire une requête plus personnalisable qu'avec un simple inetget().
Il y a aussi l'UDF IE.au3 pour automatiser une fenêtre Internet Explorer ou juste un "objet IE" dans une GUI avec _IECreateEmbedded (une page web intégrée dans la GUI).
http://autoitscript.fr/forum/viewtopic. ... it=WinHTTP Voir l'exemple de PandiPanda avec winhttp.winhttprequest, ou le mien plus loin avec _WinINet* ; même si je doute que ça puisse correspondre à ta demande... Ces exemples permettent de faire une requête plus personnalisable qu'avec un simple inetget().
Il y a aussi l'UDF IE.au3 pour automatiser une fenêtre Internet Explorer ou juste un "objet IE" dans une GUI avec _IECreateEmbedded (une page web intégrée dans la GUI).
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
-
azerty2699
- Niveau 3

- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
Re: [...] http request
En fait si j'arrive à couper une chaîne de caractère ce serait très bien, as-tu une idée pour cela ?
"couper" je veux dire en selectionner juste une partie.
"couper" je veux dire en selectionner juste une partie.
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [...] http request
Il y a certaines fonctions des rubriques String Management (celles qui commencent par String* ou _String*). Comme StringSplit, StringLeft, StringMid, etc.
Quelle fonction utiliser ? C'est au cas par cas. Il y a aussi StringRegExp qui permet de faire beaucoup de choses mais qui est un plus complexe.
Quelle fonction utiliser ? C'est au cas par cas. Il y a aussi StringRegExp qui permet de faire beaucoup de choses mais qui est un plus complexe.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
-
azerty2699
- Niveau 3

- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
Re: [...] http request
Difficile de trouver quelque chose qui correspond vraiment à mon cas ici... Voilà ce que j'essaye de faire précisément :
Je cherche à récupérer le premier paragraphe de la page, donc le programme doit :
-chercher dans le code source le premier "<p>" qu'il trouve
-chercher dans le code source le premier "</p>" qu'il trouve
-conserver uniquement ce qui se trouve entre les deux.
Est-ce que mon explication est claire ?
Je cherche à récupérer le premier paragraphe de la page, donc le programme doit :
-chercher dans le code source le premier "<p>" qu'il trouve
-chercher dans le code source le premier "</p>" qu'il trouve
-conserver uniquement ce qui se trouve entre les deux.
Est-ce que mon explication est claire ?
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [...] http request
Code : Tout sélectionner
#include <String.au3>
$aArray = _StringBetween("<p>blabla</p>", "<p>", "</p>")
ConsoleWrite($aArray[0] & @CRLF)De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [...] http request
ça serait une bonne occasion de s'initier à StringRegExp (facile dans ce cas)
Code : Tout sélectionner
Msgbox(0,"", StringRegExpReplace($source, '(?s).*?<p>(.*?)</p>.*', "$1")" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
azerty2699
- Niveau 3

- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
Re: [...] http request
Merci à vous deux, _StringBetween() et StringRegExpReplace() fonctionnent bien.
Cependant orax, j'ai remarqué que par exemple _StringBetween($oReceived, "<p>", "</p>") ne permet de récupérer que ce qui se trouve dans le premier paragraphe, mais je n'ai pas trouvé de moyen d'obtenir ce qui se trouve dans le deuxième, ou même les deux (récupérer les deux premiers paragraphes).
N'y a-t-il pas un moyen de filtrer facilement l'intérieur d'une chaîne de caractères selon les critères qu'on veut ?
Sinon mikell, si par exemple on a la chaîne
"<b>blabla</b><i>blablabla</i>"
comment remplacer "<b>" et "</b>" et "<i>" et "</i>" par une chaîne vide ? (afin de les supprimer au fait)
sans suppimer les autres "b" et "i" eventuellement présents dans le reste de la chaîne ?
J'ai essayé ceci mais ça supprime aussi tous les autres "b" qu'il trouve :
Merci.
Cependant orax, j'ai remarqué que par exemple _StringBetween($oReceived, "<p>", "</p>") ne permet de récupérer que ce qui se trouve dans le premier paragraphe, mais je n'ai pas trouvé de moyen d'obtenir ce qui se trouve dans le deuxième, ou même les deux (récupérer les deux premiers paragraphes).
N'y a-t-il pas un moyen de filtrer facilement l'intérieur d'une chaîne de caractères selon les critères qu'on veut ?
Sinon mikell, si par exemple on a la chaîne
"<b>blabla</b><i>blablabla</i>"
comment remplacer "<b>" et "</b>" et "<i>" et "</i>" par une chaîne vide ? (afin de les supprimer au fait)
sans suppimer les autres "b" et "i" eventuellement présents dans le reste de la chaîne ?
J'ai essayé ceci mais ça supprime aussi tous les autres "b" qu'il trouve :
Code : Tout sélectionner
[spoiler=]#include <String.au3>
Global $forb1 = "<b>"
$search = InputBox("", "Search :")
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "http://fr.wikipedia.org/wiki/" & $search, False)
$oHTTP.Send()
$oReceived = $oHTTP.ResponseText
$oStatusCode = $oHTTP.Status
If $oStatusCode == 200 Then
$final1 = _StringBetween($oReceived, "<p>", "</p>")
$final2 = StringRegExpReplace($final1[0], "[" & $forb1 & "]", "")
MsgBox(0, "", $final2)
Else
MsgBox(0,"","erreur inconnue")
EndIf[/spoiler]Re: [...] http request
En fait tu veux supprimer toutes les balises, non ?
Code : Tout sélectionner
$final2 = StringRegExpReplace($final1[0], "<.*?>", "")Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [...] http request
T'avais bien compris que _StringBetween renvoie un tableau ?azerty2699 a écrit :j'ai remarqué que par exemple _StringBetween($oReceived, "<p>", "</p>") ne permet de récupérer que ce qui se trouve dans le premier paragraphe
► Afficher le texte
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
-
azerty2699
- Niveau 3

- Messages : 47
- Enregistré le : mer. 07 janv. 2015 18:58
- Status : Hors ligne
Re: [...] http request
Merci jguinch, en effet je n'avais pas pensé à utliser le joker "*"...
Orax j'avais remarqué ça mais quand j'essayais $final1[1] j'obtenais une boîte de dialogue vide, simplement parce que le paragrapheétait vide...
merci pour vos réponses.
Orax j'avais remarqué ça mais quand j'essayais $final1[1] j'obtenais une boîte de dialogue vide, simplement parce que le paragrapheétait vide...
merci pour vos réponses.
