Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Obtener el contenido HTML de una URL - Visual Basic
Lenguaje de programación Visual Basic

Función Visual Basic para obtener el contenido de una URL. Permite conectarse a Internet, a la dirección indicada y obtener el contenido HTML de la misma, lo mostrará en un TextBox.


En la parte de declaraciones del formulario pondremos lo siguiente:

Option Explicit

 'Esta función establece una conexión a Internet
 Private 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

 'Esta función abre una URL
 Private 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

 'Esta función cierra la conexión a Internet de la sesión actual
 Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer

 'Esta función lee el contenido de una URL y lo devuelve en un Buffer
 Private Declare Function InternetReadFile Lib "wininet" ( _
     ByVal hFile As Long, _
     ByVal sBuffer As String, _
     ByVal lNumBytesToRead As Long, _
     lNumberOfBytesRead As Long) As Integer


Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000

La función para obtener el conteido de una página web (URL) será la siguiente:

Function obtenerURL(Url As String) As String
  Dim hOpen, hFile As Long
  Dim sBuffer As String * 128
  Dim Ret As Long
  Dim str_Total
       
  obtenerURL = ""
  
  If Url <> vbNullString Then
    'Abrimos una conexión a Internet
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, _
        vbNullString, vbNullString, 0)
                           
    'Si devuelve 0 es por que no ha podido conectarse a Internet
    If hOpen = 0 Then
      MsgBox "No se ha podido conectar a Internet.", _
          vbExclamation + vbOKOnly
    Else
      'Abrimos la URL
      hFile = InternetOpenUrl(hOpen, Trim$(Url), vbNullString, _
          ByVal 0&, INTERNET_FLAG_NO_CACHE_WRITE, ByVal 0&)
      
      If hFile = 0 Then
        MsgBox "No se ha podido obtener la URL.", _
            vbExclamation + vbOKOnly
      Else
        'Lee los 128 primeros bytes de la URL
        Call InternetReadFile(hFile, sBuffer, 128, Ret)
        str_Total = sBuffer
        While Ret <> 0
          'Va leyendo de 128 en 128 bytes, hasta que Ret sea 0
          Call InternetReadFile(hFile, sBuffer, 128, Ret)
          str_Total = str_Total & Mid(sBuffer, 1, Ret)
          DoEvents
        Wend
      End If
    End If
    
    'Cerramos el handle anterior (de la URL y de la conexión a Internet)
    Call InternetCloseHandle(hFile)
    Call InternetCloseHandle(hOpen)
      
    'Mostramos el fichero en el control RichTextBox
    obtenerURL = str_Total
  End If
End Function

Y un ejemplo de uso de esta función:

txtURLCompleta.Text = obtenerURL(txtURL.Text)
  Lógicamente, para que esto funcione, tendremos que añadir al formulario de Visual Basic:
  • TextBox: para que el usuario introduzca la URL a descargar.
  • CommandButton: un botón para que al pulsarlo obtenga el contenido de la URL.
  • TextBox: para mostrar la URL obtenida, ha de tener la propiead Multiline=True.




Publicado el: 2009-08-28

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A