Extraer texto de una web

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
overdrive
Mensajes: 3
Registrado: 13 Mar 2010, 19:59

Extraer texto de una web

Mensaje por overdrive »

Hola a todos, soy novato en autoit y quiero saber como puedo extraer datos de una web y guardar esos datos en una variable, un ejemplo.

quiero que extraiga el numero de mensajes del usuario BasicOs en http://www.emesn.com/autoitforum/memberlist.php y mostrarlo en una notificación

todo esto sin que el user se de cuenta que abrió la web, es decir no se debe abrir ningun navegador web (iexplorer, firefox, chrome, opera, etc...)
Avatar de Usuario
Nahuel
Hacker del Foro
Mensajes: 194
Registrado: 27 Jun 2007, 23:32
Ubicación: Argentina
Contactar:

Re: Extraer texto de una web

Mensaje por Nahuel »

Usá las funciones en IE.au3
La web (incluso este foro) está llena de ejemplos.
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

Re: Extraer texto de una web

Mensaje por gna08 »

Bien, poder optar x hacerlo con las librerías de ie.au3, con _iecreate("url") y luego si no mal recuerdo exactamente el nombre de la función con _iedocreadtext(instancia de iecreate)
básicamente con eso extraes sólo el texto, puedes hacerlo mas silencioso aplicando algunos atributos a iecreate.
Otra forma es con una funcion que obteniendo apartir del fuente, este hace strip y sólo deja el texto, es mucho mas rápido, si mal no recuerdo, jhonny creo posteo esta utilidad, pero creo q la quitó, yo tengo algo echo, si te interesa me decís,
saludos.
Aunk no m Buskes, Seguro m enkontras!
overdrive
Mensajes: 3
Registrado: 13 Mar 2010, 19:59

Re: Extraer texto de una web

Mensaje por overdrive »

yo he intentado hacer lo que quiero con el InetGet y luego leer el archivo descargado con el fileopen, pero aún me faltan unas cosas, me gustaría ver la herramienta, alguien la tiene?
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

Re: Extraer texto de una web

Mensaje por gna08 »

Si, jonny de este foro, em fíjate en la parte de escripts, lo puso ahí, pero no se si lo borró, yo tengo algo pero estoy en el móvil, si tengo tiempo lo subo, si no mandale un mp a jonny.
Saludos
Aunk no m Buskes, Seguro m enkontras!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Extraer texto de una web

Mensaje por Chefito »

Si es como el ejemplo que pones yo utilizaría la función _IELinkGetCollection, ya que todos los nombre de usuarios y el número de mensajes son links. Podrías filtrarlos con una condición, comparando algún trozo del href que coincida en todos, o el title, u otra posibilidad. Una vez que tienes los links válidos le sacas el texto que es lo que te interesa.

Si lo haces a partir del código html puedes utilizar _inetgetsource para sacar el código de la página y sacar lo que quieres con funciones de tratamiento de string, como _stringbetween, stringregexp,etc.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
Nahuel
Hacker del Foro
Mensajes: 194
Registrado: 27 Jun 2007, 23:32
Ubicación: Argentina
Contactar:

Re: Extraer texto de una web

Mensaje por Nahuel »

Yo usaría _InetGetSource() ya que no dependerías del IE (tan directamente). La desventaja es que no podrías acceder a una página que requiera autenticación (como la lista de miembros de este sitio).
Este ejemplo que hice te hace una lista de los usuarios que respondieron a este post:

Código: Seleccionar todo

#include <Inet.au3>
#include <array.au3>
$PostURL = 'http://www.emesn.com/autoitforum/viewtopic.php?f=12&t=1998'
$Fuente = _INetGetSource($PostURL)
$Fuente = StringReplace($Fuente,@LF,"")


$UsuariosQueRespondieron = StringRegExp($Fuente,'(?i)memberlist.php\?mode\=viewprofile\&u=.*?"\>([[:alnum:]]+)</a\>',3)
_ArrayDisplay($UsuariosQueRespondieron)
Por supuesto que habría que hacer alguna función que elimine las entradas repetidas en el arreglo y qué se yo, pero el ejemplo se entiende.
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Responder