Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: STARZ en 1 Octubre 2011, 05:59 am



Título: [Ideas] Extraer contenido web
Publicado por: STARZ en 1 Octubre 2011, 05:59 am
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/
 (http://hidemyass.com/proxy-list/)

Necesito extraer lo que esta en rojo:

(http://img843.imageshack.us/img843/9264/sinttuloufr.png)

Desde ya muchas gracias


Título: Re: [Ideas] Extraer contenido web
Publicado por: BlackZeroX en 1 Octubre 2011, 06:42 am
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!¡.


Título: Re: [Ideas] Extraer contenido web
Publicado por: x64core en 1 Octubre 2011, 07:14 am
usando las funciones del navegador parece :D


Título: Re: [Ideas] Extraer contenido web
Publicado por: Psyke1 en 2 Octubre 2011, 01:53 am
Exacto, leer el html y usar RegExp para extraer lo que quieras para mí sería la mejor opción.n

DoEvents! :P


Título: Re: [Ideas] Extraer contenido web
Publicado por: STARZ en 2 Octubre 2011, 06:54 am
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!


Título: Re: [Ideas] Extraer contenido web
Publicado por: Psyke1 en 2 Octubre 2011, 15:53 pm
Claro, mirate este hilo en el que participamos raul338 y yo hace tiempo:
Código:
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:
Código:
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:
Código:
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:
Código:
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


Título: Re: [Ideas] Extraer contenido web
Publicado por: STARZ en 4 Octubre 2011, 05:11 am
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 (http://foro.elhacker.net/programacion_visual_basic/ayudita_expresion_regular-t308911.0.html;msg1535937#msg1535937)

Adapte del PHP esto
Código:
<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


Título: Re: [Ideas] Extraer contenido web
Publicado por: Psyke1 en 4 Octubre 2011, 14:29 pm
De nada...
Mira, te dejo una optimización de la función:
Código
  1. Option Explicit
  2.  
  3. Public Function Get_Text(ByRef sText As String) As Collection
  4. Dim oRegExp                     As Object
  5. Dim oMatch                      As Object
  6. Dim oMatches                    As Object
  7.    If LenB(sText) Then
  8.       Set oRegExp = CreateObject("VBScript.RegExp")
  9.       Set Get_Text = New Collection
  10.  
  11.       With oRegExp
  12.           .Pattern = "<td><span>([\d\.]+)<\/span><\/td>"
  13.           .Global = True
  14.           .IgnoreCase = True
  15.       End With
  16.  
  17.       Set oMatches = oRegExp.Execute(sText)
  18.  
  19.       For Each oMatch In oMatches
  20.           Get_Text.Add oMatch.Submatches(0)
  21.       Next oMatch
  22.    End If
  23. End Function
  24.  
  25. Private Sub Form_Load()
  26. Dim vItem                       As Variant
  27. Const sExample                  As String = "<td><span>123.234.123.231</span></td>" & vbNewLine & _
  28.                                            "<td><span>193.134.121.233</span></td>" & vbNewLine & _
  29.                                            "<td><span>83.234.123.1</span></td>"
  30.    For Each vItem In Get_Text(sExample)
  31.        Debug.Print vItem
  32.    Next vItem
  33. End Sub

Devuelve:
Código:
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