[..] Afficher une partie d'une page web

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
nomdutilisateur
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 02 janv. 2009 09:43
Status : Hors ligne

[..] Afficher une partie d'une page web

#1

Message par nomdutilisateur »

Bonjour, j'utilise le code suivant pour afficher une page web qui contient les dernières news dans ma gui :
► Afficher le texte
Ce qui donne :
Image

Mais en fait je voudrais plutôt afficher ce qu'il i a un peu plus bas dans la page, sans avoir a utiliser manuellement la scrollbar, l'idéal serait que ça affiche ça :
Image

Donc j'ai rechercher dans l'aide quelque chose qui pourrait supprimer une partie du code html (la partie avec les drapeaux et les titres "News, Link, Date") mais je n'ai rien trouver :(


J'ai rechercher aussi quelque chose qui pourrai récupérer le lien et la date de la news soit le code :

Code : Tout sélectionner

<td><a href="../news.php?id=9218&skipsplash=true" target="_blank">St Patrick's Day Chantra Sale - Up to 50% OFF</a></td>
    <td>Mar 13th 2009</td>
Mais je n'ai pas trouver non plus comment faire pour le recuperer depuis la page et l'afficher dans la gui...

Le code html de la page en question :
► Afficher le texte
Modifié en dernier par nomdutilisateur le mer. 22 avr. 2009 01:38, modifié 2 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Afficher une partie d'une page web

#2

Message par orax »

Je chercherais du côté de _IEPropertySet ou _IEPropertyGet pour récupérer l'élément souhaité. Et peut-être _IETableGetCollection pour récupérer l'élément.
Un exemple avec _IEPropertySet pour supprimer des éléments ; toutefois, je ne sais pas si cette utilisation est "propre" mais ça semble marcher chez moi.
► Afficher le texte
Avant je faisais ça avec les expressions régulières (mais à mon avais ce n'est peut-être pas une bonne idée).

Donc à mon avis, on pourrait récupérer le contenu du tableau (les cellules <td>) St Patrick's Day Chantra Sale - Up to 50% OFF + la date avec _IETableGetCollection et récupérer les liens avec _IELinkGetCollection. J'ai fait un test rapide, ça semble aller. Il faudrait essayer de mettre ça en pratique pour voir si ça correspond à vos attentes.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Max5
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 11 sept. 2007 19:20
Status : Hors ligne

Re: [..] Afficher une partie d'une page web

#3

Message par Max5 »

Il est possible de récupérer le lien de la news (plus la description) ainsi que la date par expressions régulière puis écrire le tout dans la fenêtre _IE au moyen de _IEDocWriteHTML().

par exemple :

Code : Tout sélectionner

$regex = StringRegExp($SOURCE_HTML, "(?s)\[News\].*?(<a href.*?</a>).*?<td>(.*?)</td>", 3)
If Not @error Then
    
    $news = ""
    For $i = 0 To UBound($regex) - 1 Step 2
        $news = $news & "[News du " & $regex[$i+1] & "] : "  & $regex[$i] & @CRLF
    Next
    
    _IEDocWriteHTML($oIE, $news)
EndIf
 
J'ai basé ma regex sur le code HTML donné en exemple.
nomdutilisateur
Niveau 1
Niveau 1
Messages : 10
Enregistré le : ven. 02 janv. 2009 09:43
Status : Hors ligne

Re: [..] Afficher une partie d'une page web

#4

Message par nomdutilisateur »

Ha merci c'est parfait c'est ce que je chercher (StringRegExp) :roll:

J'ai un dernier petit soucis, J'ai tester "InetGet" ça à fonctionné, mais là avec "_IEBodyReadHTML" ce code ne fonctionne pas je ne vois pas ce qu'il cloche

Code : Tout sélectionner

Func NEWS() 
    GUICtrlCreateGroup("News", 165, 240, 410, 85)
    Dim $regex, $news, $SOURCE_HTML, $GUIActiveX, $oIE
    $oIE = _IECreateEmbedded ()
    $GUIActiveX = GUICtrlCreateObj($oIE, 168, 253, 404, 71)
    _IENavigate ($oIE, "http://archlordgame.com/launcher/right.php?territory=EnglishUK")
    $SOURCE_HTML =  _IEBodyReadHTML($oIE)
    $regex = StringRegExp($SOURCE_HTML, "(?s)\[News\].*?(<a href.*?</a>).*?<td>(.*?)</td>", 3)  
If Not @error Then
        $news = ""
        For $i = 0 To UBound($regex) - 1 Step 2
            $news = $news & '<font size="2">[' & $regex[$i+1] & "] : "  & $regex[$i] & "</font><br />"& @CRLF
        Next
        _IEDocWriteHTML($oIE, $news)
EndIf
;~ MsgBox(1,'debug_regex',$regex)
;~ MsgBox(1,'debug_SOURCE_HTML',$SOURCE_HTML)
EndFunc   ;==>NEWS
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Afficher une partie d'une page web

#5

Message par orax »

IE "traite" le code source et vous renvoie un truc différent (entre autre, on se retrouve avec des balises en majuscules). Donc changez l'expression régulière en (?is)\[News\].*?(<a href.*?</a>).*?<td>(.*?)</td>

Vous pouvez aussi utiliser :

Code : Tout sélectionner

#include <INet.au3>
$SOURCE_HTML = _INetGetSource("http://archlordgame.com/launcher/right.php?territory=EnglishUK")
pour télécharger le code source sans fichier temporaire.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre