Lire une page html ou php pour trouver un mot particulier

5/5 (8 avis)

Snippet vu 14 619 fois - Téléchargée 43 fois

Contenu du snippet

Cette petite fonction est surtout trés utile pour passer outre les problèmes rencontrer par les Inet qui se contente d'ouvrir le source sur le site hébergeur et qui restitue continuellement le même code pour les pages php alors qu'un clic droit dans la page vous montre tout autre chose.
Avec cette fonction vous aurez la source de la page générée et non pas de la page génératrice comme le font les Inet.OpenUrl.

Mettre cette fonction dans un module
et pour l'appeler ex : if lireSource2(brwWebBrowser.Document, "toto") =true then
call faitbidule()
else
call tutebarre()
endif

Source / Exemple :


Public Function lireSource2(ByRef doc As HTMLDocument, mot As String) As Boolean
'Parametre en entree :
'  - doc  = HTMLDocument en provenance du WebBrowser
'  - mot  = mot a retrouver dans la page web (HTML ou PHP)
'Parametre en Sortie : booléen vrai si mot trouvé, faux si non

         If InStr(doc.body.innerHTML, "perdu") Then
         
         lireSource2 = True
         Else
         lireSource2 = False
         End If
         
End Function

Conclusion :


Attention si la page est constituée de frame pensait à charger chacune d'elle successivement dans le brwWebBrowser, sinon vous n'obtiendrez rien, evidence mais on oublie souvent.

A voir également

Ajouter un commentaire Commentaires
Messages postés
35
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
10 avril 2008

Bonjour à tous,

j'ai testé ce code car j'ai effectivement besoin de vérifier si une chaine de caractère se trouve ou non dans une page html.

Voici le code de ma petite appli qui est quasiment le même que celui plus haut:

Public Class Form1

    Public Function lireSource2(ByRef doc As HtmlDocument, ByVal mot As String) As Boolean
        'Parametre en entree :
        '  - doc  = HTMLDocument en provenance du WebBrowser
        '  - mot  = mot a retrouver dans la page web (HTML ou PHP)
        'Parametre en Sortie : booléen vrai si mot trouvé, faux si non


        If InStr(doc.Body.InnerHtml, mot) Then

            lireSource2 = True
        Else
            lireSource2 = False
        End If


    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim adresse As String
        adresse = TextBox1.Text
        AxWebBrowser1.Navigate(adresse)
        TextBox3.Text = lireSource2(AxWebBrowser1.Document, TextBox2.Text)

    End Sub
End Class


A la ligne If InStr(doc.Body.InnerHtml, mot) j'ai l'erreur suivante: La référence d'objet n'est pas définie à une instance d'un objet.

Pourtant je reprend le code de notre ami qui a l'air de fonctionner. Quelqu'un aurait-il une idée?

Merci à vous.

Korne
Messages postés
14
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
30 décembre 2006

Voici une petite modif de ton code (légère amélioration)
à la ligne 8 mettez :

InStr(1, doc.body.innerHTML, mot, 1)

Si vous voulez rechercher un mot dans la page web sans vous soucier des minuscules/majuscules (si vous recherchez "perdu" et qu'il trouve "PeRDu" il renverra VRAI)

ou alors mettez :

InStr(1, doc.body.innerHTML, mot, 0)
Si vous voulez vous souciez des minuscules/majuscules (si vous recherchez "perdu" et qu'il trouve "PeRDu" il renverra FAUX)

--------------------------------------
Syntaxe :

InStr(A, B, C, D)

Avec :

A : le n° du caractère de la chaine de caractères à partir duquel il faut commencer la recherche

B: la chaine de caractères (ici la page web) dans laquelle on rechreche une autre chaine de caractères

C: la chaine de caractères recherchée

D: 0 ou 1 --> 0: différence entre majuscules et minuscules
1: pas de différence minuscules/majuscules

Voilà! En espérant que cela vous aidera!
Messages postés
14
Date d'inscription
jeudi 19 mai 2005
Statut
Membre
Dernière intervention
30 décembre 2006

mettez mot à la place de "perdu" à la 8e ligne et hop ça marche :)
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
'mot' ne sert à rien dans ta fonction. Et il serait pas mal de montrer comment elle peut être appelée.
Messages postés
897
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
2
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.