Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: ratix2425 en Abril 26, 2011, 09:39:15 pm
-
hola a todos,
pues esas es mi inquietud, si alguien me hecha una mano y me dice como visualizar el codigo fuente de una pagina web que se carga en un iframe,
ya que no e logrado visualizar el codigo desde el webbrowser, pero si e podido visualizar el codigo de la pagina principal que contiene el ieframe,
gracias de antemano
-
Hola si pasas el link de la pagina es mas facil ayudar.
Saludos.
-
buenos ps
resulta que hay una pagina que actua como proxy para poder visualizar otras paginas
http://af57d2bd.linkbucks.com/?lurl="aca va el link de la pagina"
por lo que e visto la pagina carga el enlace en un iframe llamado content
entonces, cuando yo quiero visualizar el codigo el me muestra es el codigo de la pagina principal sin permitirme ver el codigo fuente de la pagina enlazada
y si yo utilizo wb1.Document.GetElementById("content").OuterHtml el me imprime es el contenido de toda la etiqueta mas no el contenido de la pagina
-
hola proba de la siguiente manera
wb1.Document.GetElementById("content").Document.body.OuterHtml
Saludos.
-
no nada,me muestra es el body de la pagina principal
tambien ya utilice
wb1.document.window.frames("content").document.body.outerHTML
y me aparece que el objecto no admite esta propiedad o metodo
probando con vb net este mismo metodo aparece: InvalidArgument=El valor de 'content' no es válido para 'windowId'.
entonces por este lado tampoco me sirve
-
Option Explicit
Public Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Const INTERNET_OPEN_TYPE_DIRECT As Long = 1
Private Const INTERNET_FLAG_RELOAD = &H80000000
Public Function DescargarCodigoHTML(hURL As String, Optional hUserAgent As String = "Mozilla Firefox") As String
' // Función para descargar cualquier tipo de documento o texto de internet utilizando wininet.
Dim hInternet As Long
Dim hFile As Long
Dim hBuffer As String * 1000
Dim hRead As Long
hInternet = InternetOpen(hUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
If hInternet <> 0 Then
hFile = InternetOpenUrl(hInternet, hURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
If hFile <> 0 Then
Do
Call InternetReadFile(hFile, hBuffer, 1000, hRead)
DescargarCodigoHTML = DescargarCodigoHTML & Left$(hBuffer, hRead)
If hRead = 0 Then Exit Do
DoEvents
Loop
End If
End If
If hInternet <> 0 Then Call InternetCloseHandle(hInternet)
If hFile <> 0 Then Call InternetCloseHandle(hFile)
End Function
Con esta funcion obtienes el codigo HTML de una URL.
Lo que puedes hacer es emplear esto y "cribar" el retorno de la funcion para que solo te quede el codigo del iframe.
Para quedarte solo con el code que hay entre <iframe> y </iframe> puedes emplear esta funcion que me sirvio de mucho en su momento y que creó un amigo mio, Psikey.
Public Function Text_Between_Words(Text As String, String1 As String, String2 As String) As String
Dim Pos1 As Integer, Pos2 As Integer, Start As Integer
Pos1 = InStr(Text, String1)
If Pos1 <> 0 Then Start = Pos1 + Len(String1): Pos2 = InStr(Start, Text, String2) Else Exit Function
If Pos2 <> 0 Then Text_Between_Words = Mid$(Text, Start, Pos2 - Start)
End Function
Suerte y espero haberte ayudado!
-
el codigo esta bien (funciona) ,pero esta funcion carga nuevamente la pagina y no me serviria ya que la pagina es dinamica y necesito capturar un valor que cambia constantemente y no es el mismo valor para cada pagina que se carga.
la idea mia es capturar el codigo fuente directamente de la pagina por ejemplo http://af57d2bd.linkbucks.com/?lurl=http://www.google.com.co
capturar desde ese enlace la fuente de google.
sin tener que cargarlo nuevamente en otro lugar.
agradesco tu ayuda
gracias
-
No estoy en mi Pc y no tengo el vb... ::)
Peero... ¿algo así?
wb1.Document.GetElementById("content").InnerHtml
DoEvents! :P