[Ideas] Extraer contenido web

Iniciado por STARZ, 1 Octubre 2011, 05:59 AM

0 Miembros y 1 Visitante están viendo este tema.

STARZ

Hola:

Necesito que mi programa descargue la primera Ip y el puerto que aparece en la siguiente Web de forma automatica y luego los mande a un textbox.

Se me habia ocurrido cargar la web en un webbrowser y extraer la IP:PUERTO, pero la verdad no se me ocurre como hacer para extraerlas.

http://hidemyass.com/proxy-list/


Necesito extraer lo que esta en rojo:



Desde ya muchas gracias

BlackZeroX

A pues tienes varios metodos... extraerlo de entre el texto HTML... extraelo mediante un parse de HTML o bien algun ocx que haga algo similar!¡.

Hay mucho de esto por hay.

Dulces Lunas!¡.
The Dark Shadow is my passion.

x64core

usando las funciones del navegador parece :D

Psyke1

Exacto, leer el html y usar RegExp para extraer lo que quieras para mí sería la mejor opción.n

DoEvents! :P

STARZ

Genial, yo estaba luchando con un MultiSplit, no sabia de la existencia de RegExp (expresioner regulares).
Estoy investigando y leyendo, por ahora no he encontrado nada que me ilumine.
¿Me recomiendas algun manual o guía sobre el tema?

¡Gracias por leer y por responder!

Psyke1

Claro, mirate este hilo en el que participamos raul338 y yo hace tiempo:
http://foro.elhacker.net/programacion_visual_basic/ayudita_expresion_regular-t308911.0.html
No te asustes, ya no soy tan troll... :xD
Hay muchos ejemplos y puse unos links interesantes.

Está bien este de la wikipedia por ejemplo:
http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular
Si buscas en google encontrarás infinidad de ellos, miras de unos y de otros y en esta web:
http://regexpal.com/
Puedes hacer pruebas online (aunque hay algún caso concreto que te puede confundir...).

También te dejo unos retos que hicimos algunos del foro:
http://foro.elhacker.net/ejercicios/retos_de_expresiones_regulares-t306661.0.html
Hay algunas que ponen que son auténticas obras de arte. ;)

Con eso tienes para un buen rato.

DoEvents! :P

STARZ

Muchas Gracias Psyke1, ¡sos un grande!
Me sirvió especialmente este ejemplo para entender la utilización concreta del RegExp, específicamente en lo que andaba buscando:
http://foro.elhacker.net/programacion_visual_basic/ayudita_expresion_regular-t308911.0.html;msg1535937#msg1535937

Adapte del PHP esto
<td><span>IPQueQuiero</span></td>
que era el patron que se repetia con todas las Ips e hice algo parecido con los puertos.

Fue inexplicable la felicidad (aunque efímera, felicidad al fin) la que sentí cuando extrajo la primera IP, es por ese tipo de cosas que me gusta tanto programar.
Repito, gracias Psyke1  ;-)

Edito: Me gustaba mas tu Avatar anterior de P vs. Z  :P

Psyke1

De nada...
Mira, te dejo una optimización de la función:
Código (vb) [Seleccionar]
Option Explicit

Public Function Get_Text(ByRef sText As String) As Collection
Dim oRegExp                     As Object
Dim oMatch                      As Object
Dim oMatches                    As Object
    If LenB(sText) Then
       Set oRegExp = CreateObject("VBScript.RegExp")
       Set Get_Text = New Collection
       
       With oRegExp
           .Pattern = "<td><span>([\d\.]+)<\/span><\/td>"
           .Global = True
           .IgnoreCase = True
       End With
   
       Set oMatches = oRegExp.Execute(sText)
       
       For Each oMatch In oMatches
           Get_Text.Add oMatch.Submatches(0)
       Next oMatch
    End If
End Function

Private Sub Form_Load()
Dim vItem                       As Variant
Const sExample                  As String = "<td><span>123.234.123.231</span></td>" & vbNewLine & _
                                            "<td><span>193.134.121.233</span></td>" & vbNewLine & _
                                            "<td><span>83.234.123.1</span></td>"
    For Each vItem In Get_Text(sExample)
        Debug.Print vItem
    Next vItem
End Sub


Devuelve:
123.234.123.231
193.134.121.233
83.234.123.1


Esta es muy sencilla y no hago validación para no perder tiempo, pero mira los enlaces que puse para aprender.

PD: Ni siquiera me gusta PvZ, sólo lo puse por mi novia que está viciada a esa *****. :rolleyes:

DoEvents! :P