Download - Tuto Autoit

Transcript
Page 1: Tuto Autoit

Un libro sobre Autoit script

Máster of Autoit

Desarrollo de automatismos

Carlos Hernández Gómez

27/09/2009

Aprende a programar con ejemplos prácticos.

Page 2: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

2

Introducción a Autoit Script

AutoIt es un sistema de programación gratuito. Además de automatizar tareas usando combinaciones de teclas simuladas, clic de ratón, comandos de Windows y ficheros Script cuenta con ActiveX, dlls y plugins, como cualquier lenguaje dinámico al estilo PHP.

Wikipedia

Características cómo lenguaje de Script

Autoit nos ofrece, de manera muy rápida, un control absoluto de un ordenador, mediante cortas líneas de código podemos automatizar una tarea que nos llevaría horas/días hacerla.

Los automatismos son el punto fuerte de Autoit, pero no solo de automatismos vive este lenguaje, con Autoit podremos crear una aplicación que nos grabe un CD a las 00:00 cada día o una aplicación que nos ingrese dinero en nuestra cuenta de las islas caimán, además podremos crear un sistema de gestión tipo CRM con interface o un videojuego.

De manera muy rápida podríamos nombrar estas características:

La sintaxis es sencilla. De fácil comprensión. Tiene generador de macros y editor gráfico de formularios (IDE). Ejecutables de 250-450kb. Soporte vista UAC y expresiones regulares. Rápido y con control de otros programas. Sin API’s externas, ya que las incluye todas. Pocas líneas de código. Una comunidad de usuarios renovando Autoit continuamente. Soporte total para ejecutables de Windows (Internet Explorer, Windows Media Player,

Itunes) No hay que definir los tipos de datos de las variables Soporte para llamadas Win32 Dll

¿Qué es Autoit Script?

En resumidas cuentas, Autoit Script es un lenguaje de script creado en C++ por Jonathan Bennett ©1999-2009. Este lenguaje de script nos ayudará a crear aplicaciones que con otros lenguajes nos llevaría mucho tiempo y tendríamos que escribir más líneas de código.

Page 3: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

3

Getting started!!

Lo primero y básico, es descargar Autoit:

http://www.autoitscript.com/autoit3/downloads.shtml

Autoit lo podremos instalar en las siguientes plataformas de Windows:Windows 2000, XP, 2003, Windows Vista

Autoit no depende de librerías externas, una vez terminada la instalación de Autoit podrémos empezar a crear nuestras aplicaciones.El editor de texto predeterminado en Autoit es Scite, será el que usemos en este libro, puesto que nos ofrece una manera rápida de compilación y resaltado de texto en color (Highlight).

Ejemplo de código resaltado en Scite (App: WowMachinimaTool)

Nuestro primer programa (Hola Mundo!!)

Para empezar a crear nuestro primer programa, vamos al escritorio y pulsamos botón derecho > Nuevo > Autoit V3 Script. Sobre el fichero creado nuevamente botón derecho y Edit Script (si hiciéramos doble clic en él se ejecutaría la aplicación) después de esto se abrirá el editor Scite.

Page 4: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

4

Ejemplo de ventana de Scite con el contenido creado por Autoit en el fichero Nuevo Autoit V3 Script.au3

Autoit nos genera automáticamente el contenido que vemos en la imagen de arriba cuando creamos un script desde el escritorio. Una manera rápida de personalizar este contenido sería escribiéndolo así:

En la imagen de arriba podemos observar cómo escribir 2 tipos diferentes de comentarios, ya sean de varias líneas o de una única línea.

Page 5: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

5

Vamos a dejarnos de rollos y empecemos a programar un poco. En Autoit podemos hacer un “hola mundo” de varias maneras.

Escribe en una línea de Scite este código:

MsgBox (0,"Hoooray!","Hola mundo " & @CRLF & "Adiós mundo!")

Y pulsa la tecla F5, el resultado tendría que ser algo así:

Para guardar el script que hemos creado pulsa Alt + S. El nombre de este fichero es 1.0.au3 (en la carpeta de ejemplos).

Si todo ha ido bien y nuestro PC no ha explotado, ya tendremos creado nuestro primer Script.

Analizando el código & Sintaxis

Con el ejemplo anterior, hemos visto como mostrar un mensaje al usuario final. Pero tenemos que entender cómo lo hemos realizado.

La primera parte del código llama a la función MsgBox():

MsgBox (Argumento, "Titulo", "Texto" [, timeout [, hwnd]] ) ; Entre [] parámetros opcionales.

Esta función que está descrita mas detalladamente en el documento de funciones de Autoit nos permite devolver un mensaje al usuario, y que opcionalmente este mensaje desaparezca en unos segundos, tiene 3 argumento estáticos y 2 opciones. Si especificáramos el argumento TimeOut tendríamos que hacerlo en milisegundos.

Declaración de variables

Cómo ya hemos comentado antes, los tipos de variables no tienen que declararse, una variable puede contener un número de coma flotante o una cadena de texto, sin necesidad de declarar que contendrá esta variable como ocurre con algunos lenguajes (C++ por ejemplo).

Page 6: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

6

Un ejemplo de declaración de variables podría ser este:

ConsoleWrite(@CRLF)$MiVariable = 0ConsoleWrite($MiVariable & @CRLF)$MiVariable = "H0o0o0la!"ConsoleWrite($MiVariable & @CRLF)$MiVariable = StringUpper("texto en mayusculas")ConsoleWrite($MiVariable & @CRLF)

Cómo podrás observar, las variables pueden contener números o cadenas, además podemos llamar a funciones dentro de estas variables.Si ejecutáramos el script anterior obtendríamos algo así:

Resultado del fichero 2.0.au3, con ejemplo de consolewrite().

Hemos usado la función Consolewrite para mostrar en la “consola de Scite” la información.Esta función nos será muy útil cuando estemos desarrollando una aplicación y queramos probar cosas en testo o modo debug.

Nuestro primer Automatismo

Llegó la hora de la acción, vamos a realizar una aplicación que haga las siguientes acciones:

1. Ejecutará el bloc de notas2. Enviará un texto al bloc de notas3. La aplicación moverá la ventana del bloc de notas aleatoriamente por la pantalla

durante 5 iteraciones de un bucle.

Page 7: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

7

Código (Fichero: 3.0.au3):

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Partes opcionales;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#NoTrayIconOpt("WinTitleMatchMode",2);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Definicion de variables;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$Texto = "Este libro másmola"$TituloBloc = "Bloc de notas";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Inicio de script;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Run("notepad.exe")WinWaitActive($TituloBloc)Send($Texto);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Iteraciones del bucle;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;For $i = 0 to 5 Step + 1

Sleep(1000)$x = Random(0,500)$y = Random(0,500)WinMove($TituloBloc,"",$x,$y)

next

Quizás antes de que trabajes con este ejemplo sería interesante que lo ejecutaras para ver cuál es el resultado.

Explicación del código:

Cuando ponemos esta línea en una aplicación lo que conseguimos es que nuestra aplicación no tenga icono en la bandeja de Windows (La zona del reloj)

#NoTrayIcon

La función Opt() También llamada AutoItSetOption cambia la manera de actuar de algunas funciones internas de Autoit, en este caso lo que conseguimos es que la función WinWaitActive() nos busque cualquiera ventana llamada “bloc de notas”, y asi poder trabajar con esa ventana puesto que de no establecer el argumento “2” en la llamada a Opt() tendríamos que buscar el nombre exacto de la ventana, que en este caso sería “Sin Título – Bloc de notas”

Opt("WinTitleMatchMode",2)

Page 8: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

8

En esta parte hemos definido las variables que usaremos en el programa. Por un lado la variable $Texto contiene el texto que enviaremos al Bloc de notas, y la variable $TituloBloc contiene el titulo de la ventana del bloc de notas, en este caso no es el título entero, y es solo una parte.

$Texto = "Este libro másmola"$TituloBloc = "Bloc de notas"

La base del automatismo del programa es esta, la función Run() ejecutará una aplicación externa, para aplicaciones de Windows que ya están referenciadas no hace falta indicar una ruta por que al escribir “notepad.exe” es lo mismo que C:\Windows\Notepad.exe , aunque si quisiéramos si que podríamos usar rutas absolutas.

Run("notepad.exe")WinWaitActive($TituloBloc)Send($Texto)

La sintaxis de una iteración de un bucle es exactamente igual a la de otros lenguajes de programación, como podría ser PHP.Declaramos la variable $i con valor 0 y las iteraciones del bucle serán un total de 5, y además la variable $i se incrementará en 1 por cada iteración (Véase el Step +1).

Sleep() es una función que nos permitirá pausar la ejecución de un programa tantos milisegundos como queramos o creamos oportuno, en este caso 1 segundo.

Las variables $X e $Y contienen la función Random() , esta función generará un número aleatorio en un rango especificado, cómo nuestra intención es que el script mueva la ventana del bloc de notas por la pantalla estableciendo un máximo de 500 sabemos que no nos pasaremos de 500 pixeles, ya que si el numero generado fuera por ejemplo mayor a 2000 no veríamos la ventana puesto que se colocaría en una posición fuera de rango de visión.

Finalmente utilizamos la función WinMove() para mover la ventana con el titulo $TituloBloc a las coordenadas $x e $y

For $i = 0 to 5 Step + 1Sleep(1000)$x = Random(0,500)$y = Random(0,500)WinMove($TituloBloc,"",$x,$y)

next

Para terminar la estructura del bloque For usaremos la palabra clave Next.

Con esto hemos terminado nuestro primer automatismo (Biennn!!!!), ahora sigamos aprendiendo cosas sobre este fantástico lenguaje.

Page 9: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

9

Control de ficheros

En Autoit y al igual que en otros lenguajes, tenemos la posibilidad de crear/editar/borrar ficheros.

El apartado de gestión de ficheros es muy grande, así que vamos a realizar un pequeño script que gestione un fichero.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;includes de script;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#include <File.au3>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Declaracion de variables;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;$Archivos_de_programa = _FileListToArray(@ProgramFilesDir)$Fichero_de_salida = FileOpen(@ScriptDir & "\resultados\Test.csv",2);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Inicio de script;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;if not $Fichero_de_salida Then MsgBox("","","Error! ._ .")FileWriteLine($Fichero_de_salida,"Programas instalados");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iteraciones;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;For $x = 1 to $Archivos_de_programa[0] Step + 1FileWriteLine($Fichero_de_salida,$Archivos_de_programa[$x])NextFileClose($Fichero_de_salida);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;abrimos el fichero generado;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ShellExecute(@ScriptDir & "\resultados\Test.csv")

Vamos a explicar el código por líneas, empezamos por los includes.

#include <File.au3>

File.au3 es una librería estándar de Autoit, contiene funciones relativas al control de ficheros, en este caso la única función que usaremos de esta librería será _FileListToArray().

$Archivos_de_programa = _FileListToArray(@ProgramFilesDir)$Fichero_de_salida = FileOpen(@ScriptDir & "\resultados\Test.csv",2)

Declaramos la variable $Archivos_de_programa que contiene la función FileListToArray(), esta función nos guardará en un Array los ficheros/directorios de una ruta indicada.

Page 10: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

10

$Fichero_de_salida = FileOpen(@ScriptDir & "\resultados\Test.csv",2)

Creamos la variable $Fichero_de_salida que contiene un recurso que hace referencia a un fichero, la llamada a la función FileOpen nos permite crear este recurso, lo abrimos en con el parámetro “2” que representa escritura. El macro @ScriptDir devuelve el directorio del Script.

if not $Fichero_de_salida Then MsgBox("","","Error! ._ .")FileWriteLine($Fichero_de_salida,"Programas instalados")

Es la primera vez que vemos un condicional, (IF condicion Then). Con Autoit si ponemos If Not indicaremos que si no se declara la condición se cumpla una sentencia.Sencillamente hemos hecho que si no se pudiera crear el fichero se mostraría un mensaje en una ventana emergente con el texto “Error! ._ .”

FileWriteLine() escribirá una línea en un fichero (o recurso) con el texto indicado.

For $x = 1 to $Archivos_de_programa[0] Step + 1FileWriteLine($Fichero_de_salida,$Archivos_de_programa[$x])NextFileClose($Fichero_de_salida)

Para las iteraciones del bucle creamos la variable $x y se repetirá tantas veces cómo $Archivos_de_programa[0] indique. Si leemos la documentación de la función _FileListToArray() veremos que la primera clave de el array contiene el total de elementos del array, por eso usaremos en el bucle For la variable $Archivos_de_programa[0], porque [0] contiene el total de elementos. Finalmente usamos la palabra clave Next para indicar dónde termina el bucle For.

Terminamos de trabajar con el fichero cerrando el recurso con FileClose().Finalmente usamos ShellExecute() para abrir el fichero que hemos creado, un ejemplo del resultado podría ser este:

Page 11: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

11

Palabras clave en Autoit (Macros)

El término “Palabra clave” me lo he inventado, realmente estas palabras son un conjunto de pequeñas variables estáticas que te ayudan a la hora de programar, la mejor forma de entenderlo es ver un ejemplo en el que utilizaremos la consola de Scite así que recuerda abrir el script en modo edición y no haciendo 2 clic sobre él (Dependiendo de cómo lo tengas configurado ).

ConsoleWrite(@CRLF)ConsoleWrite("Bienvenido "&@UserName&@CRLF)ConsoleWrite(@MDAY&" - "&@MON&" - "&@YEAR&" | "&@HOUR&":"&@MIN&@CRLF)ConsoleWrite("Ruta a archivos de programa: "& @ProgramFilesDir&@CRLF)ConsoleWrite("Nombre de este fichero: "&@ScriptName&@CRLF)ConsoleWrite("IP de red: "&@IPAddress1&@CRLF)

Estas palabras clave nos ayudaran mucho a la hora de desarrollar nuestras aplicaciones, tienes una lista completa de estos macros aquí:

http://www.autoitscript.com/autoit3/docs/macros.htm

I wanna steal your dataz

Puesto que Autoit es un lenguaje de Automatismos, tenemos que tener una idea o un pequeño proyecto en mente que nos permita automatizar una tarea para así poder darnos cuenta de hasta dónde llega el potencial de Autoit.

Vamos a poner un ejemplo práctico de automatismo, he pensado en realizar peticiones HTTP a un sistema web y capturar parte de su contenido, sería como robar conseguir el contenido de su base de datos sin acceder a ella.

Se me ocurren varios ejemplos de sistemas basados en web a los que poder atacar, y de estos mismos conseguir una buena base de datos de registros.

Un ejemplo, una página web de descargas como Softonic.com o Malavida.com, estas webs almacenan registros en sus bases de datos de programas, descripciones, imágenes y cualquier registro necesario para un sistema así.

Podríamos en pocas líneas de código crear una aplicación que capturara los siguientes datos:

1. Nombre del programa2. Última versión3. Página web del producto oficial4. URL de descarga del programa

Page 12: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

12

Esto en sí no representa un “robo” de datos, puesto que son datos públicos que fácilmente podríamos conseguir en Google o en buscadores de aplicaciones. Nos meteríamos en un problema si capturáramos la descripción del programa, puesto que esta misma ha sido redactada por una persona que ha generado ese contenido y ese contenido pertenece a la web en sí y no es accesible para ser guardada nosotros.

El ejemplo práctico no lo vamos a ver con una web de descargas, vamos a verlo con una web de liricas, páginas que guardan títulos de álbum y descripciones de los artistas. Las tenemos en todos los idiomas y todas guardan el mismo contenido, pienso que hace 10 años a alguien le dio por escribir en un ordenador todas las liricas de los artistas de $ony y de ahí copiaron todas las webs existentes el contenido, lógicamente no hay un mono pasando cada canción y título de un álbum a un sistema MySQl, o quizás sí.

Una última cosa a matizar antes de pasar al ejemplo práctico, puede ser que cuando pruebes este código la web haya cambiado de estructura así que voy a explicarlo todo bien claro para que no haya dudas.

Víctima: http://www.azlyrics.com/ Descripción: Sitio web completo de álbums/liricas.

Page 13: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

13

Lo primero es entender como está estructurada la web, en la imagen de arriba podemos ver donde están las categorías, estas nos llevan a los albums y artistas. Necesitamos conseguir el listado de las url de cada categoría, bastante fácil si parseamos el HTML.

Listado de categorías, cada una tiene un HREF que se dirige al listado de artistas.

Page 14: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

14

Vamos al tema, lo primero es crear una conexión con la web, y obtener su HTML.

$URL_Base = "http://www.azlyrics.com" ;URL para obtener la informacion$oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ; Creamos una instancia de un objeto que nos permitirá realizar una peticion HTTP $oHTTP.Open("GET",$URL_Base) ; Peticion tipo GET, tambien podríamos utilizar un POST$oHTTP.Send() ; Realizamos la peticion$HTMLSource = $oHTTP.Responsetext ; Obtenemos el HTML

ConsoleWrite($HTMLSource)

Bastante fácil este código, con el objeto Winhttp.Winhttprequest.5.1 ( http://msdn.microsoft.com/en-us/library/aa384106.aspx ) lanzamos una petición a la URL y obtenemos su HTML guardándolo en $HTMLSource, después usamos ConsoleWrite para mostrar la información, el resultado tendría que ser algo así:

Bien ya tenemos el HTML, ahora tenemos que parsearlo, para entender la estructura podemos ver el código fuente de la web, para mí lo más fácil es utilizar Firefox con Firebug y así podremos entender fácilmente como están estructuradas las secciones que es lo primero que queremos obtener.

Con Firebug posicionándonos donde se encuentran las categorías señaladas en la imagen de arriba podemos ver esto:

Page 15: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

15

<td class="AtoZ"><ul><li><a href="http://www.azlyrics.com/a.html">A</a></li><li><a href="http://www.azlyrics.com/b.html">B</a></li><li><a href="http://www.azlyrics.com/c.html">C</a></li>……

Si queremos extraer los titulos/direcciones de las secciones podemos coger todo el html que hay entre <td class=”AtoZ”> … </td> y así obtendremos un texto que tendremos que volver a parsear para quedarnos solamente con las direcciones y los títulos de las secciones, tal que así:

#include <string.au3>#include <array.au3>

$URL_Base = "http://www.azlyrics.com" ;URL para obtener la informacion$oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ; Creamos una instancia de un objeto que nos permitirá realizar una peticion HTTP $oHTTP.Open("GET",$URL_Base) ; Peticion tipo GET, tambien podríamos utilizar un POST$oHTTP.Send() ; Realizamos la peticion$HTMLSource = $oHTTP.Responsetext ; Obtenemos el HTML

$HTML_A_Parsear = _StringBetween($HTMLSource,'<td class="AtoZ">',"</ul>")

$Direcciones = _StringBetween($HTML_A_Parsear[0],'<a href="','">')_ArrayDisplay($Direcciones)$Secciones = _StringBetween($HTML_A_Parsear[0],'">','</a><li><a')_ArrayDisplay($Secciones)

Page 16: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

16

En las dos imágenes de arriba vemos el resultado que genera el código. Hemos incluido dos librerías, String.au3 para hacer uso de la función _StringBetween(); y Array.au3 para llamar a la función _ArrayDisplay(); que es la función que genera estas dos imágenes.

Sobre el código, creo que queda suficientemente claro el funcionamiento, de la variable $HTML_A_Parsear extraemos las direcciones y títulos de las secciones y lo guardamos en dos variables para más tarde utilizarlas a lo largo del script.

Ahora tendremos que “navegar” a las direcciones que tenemos en los Arrays y crear nuevos Arrays con los nombres de los artistas. Primero un ejemplo sencillo con el código un poco limpio para que sea más claro de utilizar, he creado una función que realice las peticiones HTTP y así no ensuciamos tanto el código:

Page 17: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

17

#include <string.au3>#include <array.au3>

$URL_Base = "http://www.azlyrics.com" ;URL para obtener la informacion

$HTMLSource = _Http($URL_Base)

$HTML_A_Parsear = _StringBetween($HTMLSource,'<td class="AtoZ">',"</ul>")

$Direcciones = _StringBetween($HTML_A_Parsear[0],'<a href="','">')_ArrayDisplay($Direcciones)$Secciones = _StringBetween($HTML_A_Parsear[0],'">','</a><li><a')_ArrayDisplay($Secciones)

For $x = 0 to UBound($Direcciones) -1$HTMLSource = _Http($Direcciones[$x])Next

;==========================================================;Funcion HTTP;==========================================================func _Http($URL_Base)

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")$oHTTP.Open("GET",$URL_Base)$oHTTP.Send()ConsoleWrite("Httpeando "&$URL_Base&@CRLF)Return $oHTTP.Responsetext

EndFunc

Ahora la consola tendría que mostrar este resultado:

….

Hemos creado un bucle contiene tantas iteraciones como sea de grande la dimensión del Array. Y _Http(); devuelve el el html que ahora vamos a parsear en cada iteración.

Page 18: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

18

Tenemos que “investigar” el código HTML de la web para hacernos un buen partner y poder extraer únicamente los nombres de los artistas, hay algún título de artista que tiene un tag HTML de por medio para hacer por ejemplo el texto más grande, así que usaremos una expresión regular (que no es la mejor expresión que podríamos haber utilizado, pero no he sabido hacerla mejor) para eliminar tags innecesarios que solo van a ensuciar el resultado final del listado de artistas.

El resultado final del script nos devolverá por cada iteración una ventana de información con los nombres de los artistas. Ejemplo:

Page 19: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

19

El código sería el siguiente:

#include <string.au3>#include <array.au3>

$URL_Base = "http://www.azlyrics.com" ;URL para obtener la informacion

$HTMLSource = _Http($URL_Base)

$HTML_A_Parsear = _StringBetween($HTMLSource,'<td class="AtoZ">',"</ul>")$Direcciones = _StringBetween($HTML_A_Parsear[0],'<a href="','">')$Secciones = _StringBetween($HTML_A_Parsear[0],'">','</a><li><a')

For $x = 0 to UBound($Direcciones) -1$HTMLSource = _Http($Direcciones[$x])$Artistas = _StringBetween($HTMLSource,'<div class="ArtistList">','<tr><td><script type="text/javascript" src="http://images.azlyrics.com/bot_az.js"></script>')$Artistas = _StringBetween($Artistas[0],'.html">','</a><br>')

;Limpiamos el Array de tags html que se puedan colarFor $i = 0 to UBound($Artistas) -1

$Artistas[$i] = StringRegExpReplace($Artistas[$i], "[<a-z 1-9 . "" = />]", "")Next

_ArrayDisplay($Artistas)

Next

;==========================================================;Funcion HTTP;==========================================================func _Http($URL_Base)

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")$oHTTP.Open("GET",$URL_Base)$oHTTP.Send()ConsoleWrite("Httpeando "&$URL_Base&@CRLF)Return $oHTTP.Responsetext

EndFunc

¡Y ya lo tenemos! La lógica del script es bastante sencilla, aunque se podría haber planteado de diferentes maneras esta es completamente funcional.

Page 20: Tuto Autoit

Máster of Autoit

Desarrollo de automatismos

20

Voy a explicar en pocas líneas la lógica para que se entienda:

1. Incluimos librerías2. Declaramos variable de donde extraeremos las secciones3. Realizamos una petición HTTP y parseamos el HTML de la web para quedarnos solo

con las direcciones y títulos de las secciones4. Hacemos un bucle que itera tantas veces como secciones existan5. Buscamos los artistas, y limpiamos las cadenas para que solo queden los artistas.6. ¡¡Have fun!!

Ahora cada uno tendría que modificar el script a su gusto, por ejemplo insertar cada dato en una base de datos MySQL


Top Related