Bonjour à tout le groupe.
J'essaie de récupérer dans une variable texte le code source HTML d'une
page web. A priori, cela ne devrait pas être bien sorcier,
Bonjour à tout le groupe.
J'essaie de récupérer dans une variable texte le code source HTML d'une
page web. A priori, cela ne devrait pas être bien sorcier,
Bonjour à tout le groupe.
J'essaie de récupérer dans une variable texte le code source HTML d'une
page web. A priori, cela ne devrait pas être bien sorcier,
Bonjour à tout le groupe.
J'essaie de récupérer dans une variable texte le code source HTML d'une
page web. A priori, cela ne devrait pas être bien sorcier, mais comme
je suis débutant, je bloque un peu. Sur un site j'ai trouvé le code
suivant
<<
Dim MSH As New MSHTML.HTMLDocument
Dim doc As MSHTML.IHTMLDocument2
Set doc = MSH.createDocumentFromUrl(FileName, "mon URL à récupérer")
Do While doc.readyState <> "complete"
DoEvents
Loop
txtHtml = doc.documentElement.innerHTML
Mais voilà, Visual Studio ne digère pas:
- "Type 'MSHTML.HTMLDocument' non défini'. Idem pour MSHTML.ITMLDocument2
- Le nom 'FileName' n'est pas déclaré
- Le nom 'DoEvents' n'est pas déclaré
- Le nom 'txtHTML' n'est pas déclaré
Je dois certainement faire quelques "déclarations" préalables, mais je
suis trop novice que pour savoir lesquelles.
L'un de vous pourrait-il m'éclairer?
Bonjour à tout le groupe.
J'essaie de récupérer dans une variable texte le code source HTML d'une
page web. A priori, cela ne devrait pas être bien sorcier, mais comme
je suis débutant, je bloque un peu. Sur un site j'ai trouvé le code
suivant
<<
Dim MSH As New MSHTML.HTMLDocument
Dim doc As MSHTML.IHTMLDocument2
Set doc = MSH.createDocumentFromUrl(FileName, "mon URL à récupérer")
Do While doc.readyState <> "complete"
DoEvents
Loop
txtHtml = doc.documentElement.innerHTML
Mais voilà, Visual Studio ne digère pas:
- "Type 'MSHTML.HTMLDocument' non défini'. Idem pour MSHTML.ITMLDocument2
- Le nom 'FileName' n'est pas déclaré
- Le nom 'DoEvents' n'est pas déclaré
- Le nom 'txtHTML' n'est pas déclaré
Je dois certainement faire quelques "déclarations" préalables, mais je
suis trop novice que pour savoir lesquelles.
L'un de vous pourrait-il m'éclairer?
Bonjour à tout le groupe.
J'essaie de récupérer dans une variable texte le code source HTML d'une
page web. A priori, cela ne devrait pas être bien sorcier, mais comme
je suis débutant, je bloque un peu. Sur un site j'ai trouvé le code
suivant
<<
Dim MSH As New MSHTML.HTMLDocument
Dim doc As MSHTML.IHTMLDocument2
Set doc = MSH.createDocumentFromUrl(FileName, "mon URL à récupérer")
Do While doc.readyState <> "complete"
DoEvents
Loop
txtHtml = doc.documentElement.innerHTML
Mais voilà, Visual Studio ne digère pas:
- "Type 'MSHTML.HTMLDocument' non défini'. Idem pour MSHTML.ITMLDocument2
- Le nom 'FileName' n'est pas déclaré
- Le nom 'DoEvents' n'est pas déclaré
- Le nom 'txtHTML' n'est pas déclaré
Je dois certainement faire quelques "déclarations" préalables, mais je
suis trop novice que pour savoir lesquelles.
L'un de vous pourrait-il m'éclairer?
Toutefois, afin d'éviter une erreur 'AccessViolationExeption' sur cette
instruction, il faut "caster" la classe HTMLDocument class à
IPersistStream :
<http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/cfbe816a-dc15-4a73-a7fc-8dfbf01d98f0>
Pour résumer, un petit code, qui fonctionne avec VB 2005 (à coller dans
Form1.vb, par exemple) :
'==================================================================================================== > Option Strict Off
Option Explicit On
Imports System.Runtime.InteropServices
<ComVisible(True), ComImport(),
Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"), _
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IPersistStreamInit
Sub GetClassID(ByRef pClassID As Guid)
<PreserveSig()> Function IsDirty() As Integer
<PreserveSig()> Function Load(ByVal pstm As ComTypes.IStream) As
Integer
<PreserveSig()> Function Save(ByVal pstm As ComTypes.IStream, _
ByVal ByValByValfClearDirty As Boolean) As Integer
<PreserveSig()> Function GetSizeMax(<InAttribute(), Out(), _
MarshalAs(UnmanagedType.U8)> ByRef pcbSize As Long) As
Integer
<PreserveSig()> Function InitNew() As Integer
End Interface
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim MSH As New mshtml.HTMLDocument
Dim doc As mshtml.IHTMLDocument2
Dim iPersistStream As IPersistStreamInit
Dim FileName As String, txtHtml As String
FileName = "http://www.google.fr"
iPersistStream = DirectCast(MSH, IPersistStreamInit)
iPersistStream.InitNew()
doc = MSH.createDocumentFromUrl(FileName, vbNullString)
Do While doc.readyState <> "complete"
Application.DoEvents()
Loop
txtHtml = doc.documentElement.innerHTML()
Debug.Print(txtHtml)
doc.close()
MSH = Nothing
End Sub
End Class
'==================================================================================================== >
Je ne l'ai pas mis sur une ligne, afin d'être plus lisible ;-)
--
Cordialement,
Jacques.
Toutefois, afin d'éviter une erreur 'AccessViolationExeption' sur cette
instruction, il faut "caster" la classe HTMLDocument class à
IPersistStream :
<http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/cfbe816a-dc15-4a73-a7fc-8dfbf01d98f0>
Pour résumer, un petit code, qui fonctionne avec VB 2005 (à coller dans
Form1.vb, par exemple) :
'==================================================================================================== > Option Strict Off
Option Explicit On
Imports System.Runtime.InteropServices
<ComVisible(True), ComImport(),
Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"), _
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IPersistStreamInit
Sub GetClassID(ByRef pClassID As Guid)
<PreserveSig()> Function IsDirty() As Integer
<PreserveSig()> Function Load(ByVal pstm As ComTypes.IStream) As
Integer
<PreserveSig()> Function Save(ByVal pstm As ComTypes.IStream, _
ByVal ByValByValfClearDirty As Boolean) As Integer
<PreserveSig()> Function GetSizeMax(<InAttribute(), Out(), _
MarshalAs(UnmanagedType.U8)> ByRef pcbSize As Long) As
Integer
<PreserveSig()> Function InitNew() As Integer
End Interface
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim MSH As New mshtml.HTMLDocument
Dim doc As mshtml.IHTMLDocument2
Dim iPersistStream As IPersistStreamInit
Dim FileName As String, txtHtml As String
FileName = "http://www.google.fr"
iPersistStream = DirectCast(MSH, IPersistStreamInit)
iPersistStream.InitNew()
doc = MSH.createDocumentFromUrl(FileName, vbNullString)
Do While doc.readyState <> "complete"
Application.DoEvents()
Loop
txtHtml = doc.documentElement.innerHTML()
Debug.Print(txtHtml)
doc.close()
MSH = Nothing
End Sub
End Class
'==================================================================================================== >
Je ne l'ai pas mis sur une ligne, afin d'être plus lisible ;-)
--
Cordialement,
Jacques.
Toutefois, afin d'éviter une erreur 'AccessViolationExeption' sur cette
instruction, il faut "caster" la classe HTMLDocument class à
IPersistStream :
<http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/cfbe816a-dc15-4a73-a7fc-8dfbf01d98f0>
Pour résumer, un petit code, qui fonctionne avec VB 2005 (à coller dans
Form1.vb, par exemple) :
'==================================================================================================== > Option Strict Off
Option Explicit On
Imports System.Runtime.InteropServices
<ComVisible(True), ComImport(),
Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"), _
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IPersistStreamInit
Sub GetClassID(ByRef pClassID As Guid)
<PreserveSig()> Function IsDirty() As Integer
<PreserveSig()> Function Load(ByVal pstm As ComTypes.IStream) As
Integer
<PreserveSig()> Function Save(ByVal pstm As ComTypes.IStream, _
ByVal ByValByValfClearDirty As Boolean) As Integer
<PreserveSig()> Function GetSizeMax(<InAttribute(), Out(), _
MarshalAs(UnmanagedType.U8)> ByRef pcbSize As Long) As
Integer
<PreserveSig()> Function InitNew() As Integer
End Interface
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim MSH As New mshtml.HTMLDocument
Dim doc As mshtml.IHTMLDocument2
Dim iPersistStream As IPersistStreamInit
Dim FileName As String, txtHtml As String
FileName = "http://www.google.fr"
iPersistStream = DirectCast(MSH, IPersistStreamInit)
iPersistStream.InitNew()
doc = MSH.createDocumentFromUrl(FileName, vbNullString)
Do While doc.readyState <> "complete"
Application.DoEvents()
Loop
txtHtml = doc.documentElement.innerHTML()
Debug.Print(txtHtml)
doc.close()
MSH = Nothing
End Sub
End Class
'==================================================================================================== >
Je ne l'ai pas mis sur une ligne, afin d'être plus lisible ;-)
--
Cordialement,
Jacques.
Merci beaucoup Jacques. Finalement dans .NET il n'y avait pas
Microsoft.mshtml alors j'ai téléchargé la dll du même nom et l'ai
rajoutée comme référence avec l'onglet "parcourir". Cela solutionne mes
petits soucis d'erreurs et de déclaration.
Par contre, j'ai des pb avec le "castage". Je ne comprends absolument
pas de quoi il s'agit. J'ai donc recopié purement et simplement.
Quand j'exécute en debug, parfois ça fonctionne et parfois pas; j'ai
essayé plusieurs fois avec une page du type "perso" (sans userid / pwd).
J'ai également essayé sur ma page facebook en ayant ouvert une session
dans IE, mais là, c'est le délire total (Visual Studio bascule vers IE,
puis IE clignote et rien ne se passe).
Bref... j'ai encore quelques heures devant moi à consacrer pour
comprendre un peu mieux tout ça ;-))))
Merci beaucoup Jacques. Finalement dans .NET il n'y avait pas
Microsoft.mshtml alors j'ai téléchargé la dll du même nom et l'ai
rajoutée comme référence avec l'onglet "parcourir". Cela solutionne mes
petits soucis d'erreurs et de déclaration.
Par contre, j'ai des pb avec le "castage". Je ne comprends absolument
pas de quoi il s'agit. J'ai donc recopié purement et simplement.
Quand j'exécute en debug, parfois ça fonctionne et parfois pas; j'ai
essayé plusieurs fois avec une page du type "perso" (sans userid / pwd).
J'ai également essayé sur ma page facebook en ayant ouvert une session
dans IE, mais là, c'est le délire total (Visual Studio bascule vers IE,
puis IE clignote et rien ne se passe).
Bref... j'ai encore quelques heures devant moi à consacrer pour
comprendre un peu mieux tout ça ;-))))
Merci beaucoup Jacques. Finalement dans .NET il n'y avait pas
Microsoft.mshtml alors j'ai téléchargé la dll du même nom et l'ai
rajoutée comme référence avec l'onglet "parcourir". Cela solutionne mes
petits soucis d'erreurs et de déclaration.
Par contre, j'ai des pb avec le "castage". Je ne comprends absolument
pas de quoi il s'agit. J'ai donc recopié purement et simplement.
Quand j'exécute en debug, parfois ça fonctionne et parfois pas; j'ai
essayé plusieurs fois avec une page du type "perso" (sans userid / pwd).
J'ai également essayé sur ma page facebook en ayant ouvert une session
dans IE, mais là, c'est le délire total (Visual Studio bascule vers IE,
puis IE clignote et rien ne se passe).
Bref... j'ai encore quelques heures devant moi à consacrer pour
comprendre un peu mieux tout ça ;-))))
Jo a écrit :Merci beaucoup Jacques. Finalement dans .NET il n'y avait pas
Microsoft.mshtml alors j'ai téléchargé la dll du même nom et l'ai
rajoutée comme référence avec l'onglet "parcourir". Cela solutionne mes
petits soucis d'erreurs et de déclaration.
De mon côté, je l'ai dans :
C:Program FilesMicrosoft.NETPrimary Interop Assemblies
et il semble bien lié à VS2005 (Date du 09/12/2005)Par contre, j'ai des pb avec le "castage". Je ne comprends absolument
pas de quoi il s'agit. J'ai donc recopié purement et simplement.
Quand j'exécute en debug, parfois ça fonctionne et parfois pas; j'ai
essayé plusieurs fois avec une page du type "perso" (sans userid / pwd).
Le "castage" consiste en gros à forcer la conversion de type de données.
Parfois celle-ci est implicite, parfois non ...
<http://msdn.microsoft.com/en-us/library/7k6y2h6x(VS.71).aspx>
Il est tout à fait possible que dans la cas présent, cela soit lié à la
version 2005. Est ce celle la que tu utilises ?J'ai également essayé sur ma page facebook en ayant ouvert une session
dans IE, mais là, c'est le délire total (Visual Studio bascule vers IE,
puis IE clignote et rien ne se passe).
Bref... j'ai encore quelques heures devant moi à consacrer pour
comprendre un peu mieux tout ça ;-))))
Juste une précision, on peut utiliser MsHtml avec ou sans WebBrowser, mais
le fonctionnement diffère un peu.
J'ai oublié dans ma réponse précédente de préciser que ce groupe est
plutôt dédié à VB5 / VB6. Il existe un groupe spécifique à .Net :
microsoft.public.fr.dotnet.vb
tu devrais y trouver des personnes plus avertis dans ce domaine. Il n'est
pas impossible que dans les dernières versions de .Net (2008),
l'utilisation de MsHtml ne soit plus nécessaire (hypothèse gratuite, mais
à vérifier...)
--
Cordialement,
Jacques.
Jo a écrit :
Merci beaucoup Jacques. Finalement dans .NET il n'y avait pas
Microsoft.mshtml alors j'ai téléchargé la dll du même nom et l'ai
rajoutée comme référence avec l'onglet "parcourir". Cela solutionne mes
petits soucis d'erreurs et de déclaration.
De mon côté, je l'ai dans :
C:Program FilesMicrosoft.NETPrimary Interop Assemblies
et il semble bien lié à VS2005 (Date du 09/12/2005)
Par contre, j'ai des pb avec le "castage". Je ne comprends absolument
pas de quoi il s'agit. J'ai donc recopié purement et simplement.
Quand j'exécute en debug, parfois ça fonctionne et parfois pas; j'ai
essayé plusieurs fois avec une page du type "perso" (sans userid / pwd).
Le "castage" consiste en gros à forcer la conversion de type de données.
Parfois celle-ci est implicite, parfois non ...
<http://msdn.microsoft.com/en-us/library/7k6y2h6x(VS.71).aspx>
Il est tout à fait possible que dans la cas présent, cela soit lié à la
version 2005. Est ce celle la que tu utilises ?
J'ai également essayé sur ma page facebook en ayant ouvert une session
dans IE, mais là, c'est le délire total (Visual Studio bascule vers IE,
puis IE clignote et rien ne se passe).
Bref... j'ai encore quelques heures devant moi à consacrer pour
comprendre un peu mieux tout ça ;-))))
Juste une précision, on peut utiliser MsHtml avec ou sans WebBrowser, mais
le fonctionnement diffère un peu.
J'ai oublié dans ma réponse précédente de préciser que ce groupe est
plutôt dédié à VB5 / VB6. Il existe un groupe spécifique à .Net :
microsoft.public.fr.dotnet.vb
tu devrais y trouver des personnes plus avertis dans ce domaine. Il n'est
pas impossible que dans les dernières versions de .Net (2008),
l'utilisation de MsHtml ne soit plus nécessaire (hypothèse gratuite, mais
à vérifier...)
--
Cordialement,
Jacques.
Jo a écrit :Merci beaucoup Jacques. Finalement dans .NET il n'y avait pas
Microsoft.mshtml alors j'ai téléchargé la dll du même nom et l'ai
rajoutée comme référence avec l'onglet "parcourir". Cela solutionne mes
petits soucis d'erreurs et de déclaration.
De mon côté, je l'ai dans :
C:Program FilesMicrosoft.NETPrimary Interop Assemblies
et il semble bien lié à VS2005 (Date du 09/12/2005)Par contre, j'ai des pb avec le "castage". Je ne comprends absolument
pas de quoi il s'agit. J'ai donc recopié purement et simplement.
Quand j'exécute en debug, parfois ça fonctionne et parfois pas; j'ai
essayé plusieurs fois avec une page du type "perso" (sans userid / pwd).
Le "castage" consiste en gros à forcer la conversion de type de données.
Parfois celle-ci est implicite, parfois non ...
<http://msdn.microsoft.com/en-us/library/7k6y2h6x(VS.71).aspx>
Il est tout à fait possible que dans la cas présent, cela soit lié à la
version 2005. Est ce celle la que tu utilises ?J'ai également essayé sur ma page facebook en ayant ouvert une session
dans IE, mais là, c'est le délire total (Visual Studio bascule vers IE,
puis IE clignote et rien ne se passe).
Bref... j'ai encore quelques heures devant moi à consacrer pour
comprendre un peu mieux tout ça ;-))))
Juste une précision, on peut utiliser MsHtml avec ou sans WebBrowser, mais
le fonctionnement diffère un peu.
J'ai oublié dans ma réponse précédente de préciser que ce groupe est
plutôt dédié à VB5 / VB6. Il existe un groupe spécifique à .Net :
microsoft.public.fr.dotnet.vb
tu devrais y trouver des personnes plus avertis dans ce domaine. Il n'est
pas impossible que dans les dernières versions de .Net (2008),
l'utilisation de MsHtml ne soit plus nécessaire (hypothèse gratuite, mais
à vérifier...)
--
Cordialement,
Jacques.
Merci Jacques. J'utilise Microsoft Visual Studio 2008, version 9.021.
Microsoft Net Framework, version 3.5 SP1.
Pour moi, visual basic V6 ou .NET, je ne connais pas trop la
différence. Je vais cependant aller raconter notre échange sur ...
dotnet.vb
Mille excuses pour les V6 que j'aurais importunés.
Entretemps j'ai essayé avec vbscript sur base d'un bout de code reçu en
son temps d'un ami.
<<
Dim IE
Set wshShell = WScript.CreateObject ("WScript.shell")
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate("http://www.google.fr")
Do While (IE.Busy)
WScript.Sleep 10
Loop
wshShell.AppActivate("Internet Explorer")
Data = IE.Document.documentElement.innerHTML ' Data contient tout le
code source de la page web
WScript.Echo "Code " & Data
IE.quit
WScript.Quit
... mais la commande WScript.Echo ne donne rien...
Merci Jacques. J'utilise Microsoft Visual Studio 2008, version 9.021.
Microsoft Net Framework, version 3.5 SP1.
Pour moi, visual basic V6 ou .NET, je ne connais pas trop la
différence. Je vais cependant aller raconter notre échange sur ...
dotnet.vb
Mille excuses pour les V6 que j'aurais importunés.
Entretemps j'ai essayé avec vbscript sur base d'un bout de code reçu en
son temps d'un ami.
<<
Dim IE
Set wshShell = WScript.CreateObject ("WScript.shell")
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate("http://www.google.fr")
Do While (IE.Busy)
WScript.Sleep 10
Loop
wshShell.AppActivate("Internet Explorer")
Data = IE.Document.documentElement.innerHTML ' Data contient tout le
code source de la page web
WScript.Echo "Code " & Data
IE.quit
WScript.Quit
... mais la commande WScript.Echo ne donne rien...
Merci Jacques. J'utilise Microsoft Visual Studio 2008, version 9.021.
Microsoft Net Framework, version 3.5 SP1.
Pour moi, visual basic V6 ou .NET, je ne connais pas trop la
différence. Je vais cependant aller raconter notre échange sur ...
dotnet.vb
Mille excuses pour les V6 que j'aurais importunés.
Entretemps j'ai essayé avec vbscript sur base d'un bout de code reçu en
son temps d'un ami.
<<
Dim IE
Set wshShell = WScript.CreateObject ("WScript.shell")
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate("http://www.google.fr")
Do While (IE.Busy)
WScript.Sleep 10
Loop
wshShell.AppActivate("Internet Explorer")
Data = IE.Document.documentElement.innerHTML ' Data contient tout le
code source de la page web
WScript.Echo "Code " & Data
IE.quit
WScript.Quit
... mais la commande WScript.Echo ne donne rien...