Página 1 de 1

Extraer texto de una web

Publicado: 13 Mar 2010, 21:40
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...)

Re: Extraer texto de una web

Publicado: 14 Mar 2010, 19:36
por Nahuel
Usá las funciones en IE.au3
La web (incluso este foro) está llena de ejemplos.

Re: Extraer texto de una web

Publicado: 15 Mar 2010, 08:36
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.

Re: Extraer texto de una web

Publicado: 16 Mar 2010, 21:42
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?

Re: Extraer texto de una web

Publicado: 16 Mar 2010, 21:57
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

Re: Extraer texto de una web

Publicado: 16 Mar 2010, 22:24
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.

Re: Extraer texto de una web

Publicado: 17 Mar 2010, 17:37
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.