Como descargo un fichero de internet

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

La pregunta es simple entro a una pagina recojo los links con _IELinkGetCollection,verifico que haya alguno con la descripsion que necesito si lo hay lo descargo pero cual es la funcion para descargar un fichero una vez que tienes el link o esta funcion no sirve para esto?
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Como descargo un fichero de internet

Mensaje por Ximorro »

En la versión de AutoIT que uso yo se hace con InetGet($url, $archivo), ¡facil!. Creo que en la última ha cambiado algo pero me parece que la función se llama igual, búscala en la ayuda para ver los detalles.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

Gracias pero la funcion no le entiendo ya lo he intentado pero nada,no se si podras hecharme la mano,se supone que creas una forma con una Ie embebidad
para no tener problemas yo me logeo cuando llego al lugar que necesito bajar archivos le doy al boton empezar,obtiene todos los links pero no baja ninguno
te dejo abajo el codigo aber si me puedes ayudar,los archivos son pdf y xml.gracias

Código: Seleccionar todo

#include <GUIConstants.au3>
#include <IE.au3>

Global $URL="C:\Users\luis\Desktop\facturas\Agosto1"
$GUI = GUICreate("buscador", 800, 450)
Global $object = ObjCreate("Shell.Explorer.2")
$object_ctrl = GUICtrlCreateObj($object, 16, 10, 780, 400)
$url_button = GUICtrlCreateButton("Guarda en", 166, 410, 400, 25, 0)

$Empezar = GUICtrlCreateButton("Empezar", 16, 410, 50, 25, 0) ; Creats Back GUI
$progressbar1 = GUICtrlCreateProgress ( 570, 415, 200, 20, 0) ; Creates Progress bar

GUISetState()
_IENavigate($object, "https://www.mysuitecfdi.com/login.aspx")
$oForm = _IEFormGetObjByName ($object, "suggest_link")
$oText = _IEFormElementGetObjByName ($oForm, "title")
_IEFormElementSetValue ($oText, "Nombre")
$oText2 = _IEFormElementGetObjByName ($oForm, "url")
_IEFormElementSetValue ($oText2, "Dirección")

While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $url_button
        $URL = Inputbox("Direccion", "Escribe la ruta")
        
    Case $msg = $back_button 
   $olinks = _IELinkGetCollection($object)
   For $olink In $olinks 
      If $olink.innerText=="PDF" Then      
          inetget($olink, $URL,1,1)
		EndIf  
	  If $olink.innerText=="XML" Then
		  inetget($olink, $URL,1,1)
        EndIf 
  Next   
    Case $msg = $GUI_EVENT_CLOSE
        Exit
    EndSelect
WEnd
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Como descargo un fichero de internet

Mensaje por Ximorro »

¿Pero qué valen $olink y $URL? (prueba a hacer un consolewrite o un msgbox a ver qué te dan)
Tienen que ser cadenas, en $olink tiene que estar la URL del archivo a descargar y en $URL el path del archivo EN TU DISCO, o sea, dónde lo vas a guardar.

Por ejemplo:
InetGet("http://www.emesn.com/autoitforum/styles ... _logo2.png", "c:\logo_autoit.png")
descarga el logo de esta web en la unidad C:
prueba esa línea a ver si te funciona, si esto va el problema está en las variables que le estás pasando.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

ok olink es la coleccion de links nada mas que no recuerdo si se pone a asi o olink.href o algo asi y url es la ruta donde quiero que se guarden.la linea de codigo que me distes funciona,deja verificar,por cierto cual es la forma correcta de utilizar el msgbox ya que me marca error
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Como descargo un fichero de internet

Mensaje por Ximorro »

Entonces de $olink tendrás que sacar la url concreta. No conozco las funciones _IE pero no creo que sea complicado.
Además no tengo muy claro que en el segundo parámetro baste poner la carpeta, creo que hay que poner el path completo con nombre de archivo.

¿Cómo has puesto el MsgBox?
Tiene muchas posibilidades pero el uso básico es:
MsgBox(0, "Título", "Texto")
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

Gracias por tu ayuda,ya funciona , pero creo que es mas complicado de lo que parece ya que checando el link,veo que tiene javascript una funcion que se llama postback la cual no puedo hacer que funcione,si alguien tuviera la respuesta se los agradeceria
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Como descargo un fichero de internet

Mensaje por Chefito »

luis escribió:Gracias por tu ayuda,ya funciona , pero creo que es mas complicado de lo que parece ya que checando el link,veo que tiene javascript una funcion que se llama postback la cual no puedo hacer que funcione,si alguien tuviera la respuesta se los agradeceria
Con esos pocos datos no se te puede ayudar mucho. Y más cuando no podemos acceder a la página con el código html para poder probar cosas, ya que tienes que estar registrado.
Hay varios ejemplos que como hacer funcionar una función javascript. Yo he puesto varios post. Poniendo en la búsqueda del foro (arriba a la derecha) la palabra javascript, y por ejemplo mirando mis post, te salen varios con la solución. El primero con la solución sería este: http://www.emesn.com/autoitforum/viewto ... ipt#p11840.

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 ;).
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

Gracias lamentablemente no puedo darte la pagina ya que los archivos los descargo de un servidor y como sabras sus contraseñas son privadas,por cierto sabes que es lo que hace exactamente el codigo que puse antes de javascript,como hago para _IELinkClickByText al clickear no habra en otra pagina si no en la misma
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Como descargo un fichero de internet

Mensaje por Chefito »

luis escribió:por cierto sabes que es lo que hace exactamente el codigo que puse antes de javascript
No lo se. No se si es una función creada por el usuario o definida en el propio lenguaje. Nunca la he visto. Te recomiendo que busques en google :smt024 .
luis escribió:como hago para _IELinkClickByText al clickear no habra en otra pagina si no en la misma
Puede que lo más facil sea coger su dirección url y cargarla en el propio navegador.
Un pequeño ejemplo:

Código: Seleccionar todo

#include <IE.au3>
$oIE = _IECreate ("http://www.emesn.com/foro.php")
$oLinks = _IELinkGetCollection ($oIE)
For $oLink In $oLinks
    If $oLink.innertext=="Por voz terra" Then
		ExitLoop
	EndIf
Next
_IENavigate($oIE, $oLink.href)
Otra forma puede que sea cambiando su propiedad target="_seft". Mira por ejemplo esta web donde explican sus valores: http://www.aulaclic.es/html/t_7_3.htm

Código: Seleccionar todo

#include <IE.au3>
$oIE = _IECreate ("http://www.emesn.com/foro.php")
$oLinks = _IELinkGetCollection ($oIE)
For $oLink In $oLinks
    If $oLink.innertext=="Por voz terra" Then
		ExitLoop
	EndIf
Next
$oLink.target="_self"
$oLink.click
Hay otras formas un poco más complicadas.

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 ;).
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

Gracias utilize $oLink.target="_self",$oLink.click,pero te manda la pagina para descargar como ases para capturarla o mejor como lo descargas,con InetGet vamos declaras una funcion que obtenga la pagina y la pasas al comando inetget o eso no se puede?,mejor aun como le hago para saber que pagina me esta cargando
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Como descargo un fichero de internet

Mensaje por Chefito »

Primeramente decirte que te expresas fatal :smt012 . A veces me cuesta entender lo que quieres decir. Explícate mejor, esplayate escribiendo, pon ejemplos de lo que quieres, códigos, y por favor, utiliza los signos de puntuación (comas y demás). Que esto no es un sms de un movil :smt005 .

Supongo que si un link tiene en su propiedad href la dirección de descarga del archivo, simplemente tienes que capturar ésta para luego utilizarla con la función inetget. Simpelemente eso. No hay más.
Si no es así, compañero......explícate mejor que no somos adivinos. Di donde está ese link de descarga, como se crea, pon algo de código html-javascript, etc. Mi bola de cristal está estropeada en estos momentos. No puedo adivinar las cosas :smt005 .

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 ;).
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

:smt042 lo siento ando un tanto desvelado por este programa,te explico entro a un servidor donde tienes unos 100 archivos que se necesitan descargar,pero los links estan programados con javascript tienen una url como esta: javascript:__doPostBack('ctl00$ContentPlaceHolder1$GVDocumentos$ctl02$lnkPDF',''),el punto es que esta no es la url real ya que no me descarga nada,entonces se me ocurrio mandar un click al link para que me de la url real y asi poder descargarlo con inneget,se le da un click y me direcciona a la url real pero no se como capturar esta url para pasarselo inneget,o esto es cierto o tengo que estudiar mas html.Gracias y una disculpa
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Como descargo un fichero de internet

Mensaje por Chefito »

Pues no se chico. Eso parece muy dificil de resolver si no podemos hacer pruebas. Si miras esa función en google te salen bastantes resultados: http://www.google.es/#hl=es&sugexp=kjrm ... 66&bih=646
Puede ser que sea cuestión de investigar que hace y como lo hace para poder trabajar con ella.
Exactamente que es lo que hace cuando le das al link? Te sale directamente la ventana de descargar el archivo?(supongo que sea esto). O te redirecciona a otra página con le link?.
Que ocurre si pones esto cuando estés en la página?

Código: Seleccionar todo

_ienavigate($object, "javascript:__doPostBack('ctl00$ContentPlaceHolder1$GVDocumentos$ctl02$lnkPDF','')")
Esto ctl00$ContentPlaceHolder1$GVDocumentos$ctl02$lnkPDF parecen datos que le pasas al servidor para que trabaje con ellos y te devuelva algo. Seguramente están separador por el símbolo $. ctl debe ser control, ContentPlaceHolder significa más o menos Contenido del marcado de posición?, lnkPDF debe ser el link del pdf, y GVDocumentos podría ser un path?? Todo esto son conjeturas. Habría que saber que hace el servidor con estos datos.

No estará definida la función __doPostBack en la página web no? Eso sería de mucha ayuda. Aunque por lo que he podido ver, seguramente no.

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 ;).
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

cuando se le da el click automaticamente te da el fichero para que lo descargues (te aparece la ventana de windows de quieres guardarlo o cancelar),pero en errores que he tenido te manda a una pagina y arriba te aparece la url completa de donde esta el archivo esa es la razon por la que quiero capturar esa pagina porque asi puedo mandarselo a inneget.en teoria parese sencillo pero creo que es mas dificil de lo que pense :smt022
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Como descargo un fichero de internet

Mensaje por Ximorro »

Viendo la url final a mano ¿no puedes montarla completa con los nombres de archivo?
Quiero decir, si por ejemplo ves que un archivo está en "http://www.cosa.com/documentos/documento.pdf"
Y están siempre en esa carpeta, desde la página donde descargas podrás extraer los nombres de archivo, sería ir cambiando en esa url el nombre de archivo pero manteniendo el path. Eso sí se lo podrías pasar a InetGet.
A InetGet hay que pasarle una url, no puedes pasarle javascript.

Chefito, o quien sepa, ¿se puede preguntar a la página web por el valor de variables javascript que está manejando. Sospecho que sabiendo el valor de
ctl00
ContentPlaceHolder1
GVDocumentos
ctl02
lnkPDF
se puede montar la url, ¿No será que "$" es concatenador de cadenas y simplemente está montando la url con esas partes?

luis, mira a ver si el código javascript está en la propia página html, busca esa función a ver cómo es. Puede que no esté directamente, sino en un "include" tipo:
<script type="text/javascript" src="http://www.laweb.com/rutinas/utilidades.js"></script>
En ese caso también se puede descargar utilidades.js o como se llame y mirar la función.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Como descargo un fichero de internet

Mensaje por arkcrew »

Y porque no pruebas a obtener el link al que hace click, analizarlo (en caso de que no sea un enlace al archivo) y sacar de ese archivo el link de descarga, si como bien dice Ximorro es un archivo .js, puedes analizarlo y ver como genera el enlace y así puedes añadirlo en un integet y poder descargarte el archivo...

Espero haberme explicado.
Saludos!
luis
Mensajes: 9
Registrado: 26 Oct 2011, 06:21

Como descargo un fichero de internet

Mensaje por luis »

Gracias al momento de darle click con autoit me muestra una pagina fuera de la gui y me genera un error y se sale del programa ,lo ultimo que pense es abrir pagina de internet,mandar un click y esperar la ventana de descarga de IE y que presione el boton de guardar, pero por alguna razon no envia el click,ya me canse creo que javascript gano :smt022 ,Gracias a todos.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Como descargo un fichero de internet

Mensaje por Chefito »

luis escribió:Gracias al momento de darle click con autoit me muestra una pagina fuera de la gui y me genera un error y se sale del programa ,lo ultimo que pense es abrir pagina de internet,mandar un click y esperar la ventana de descarga de IE y que presione el boton de guardar, pero por alguna razon no envia el click,ya me canse creo que javascript gano ,Gracias a todos.
Es que más no se puede hacer hacer sin poder acceder a la página. Si tuvieramos acceso podríamos probar códigos a ver si dabamos con la solución. Pero así no :smt021 .
Ximorro escribió:Chefito, o quien sepa, ¿se puede preguntar a la página web por el valor de variables javascript que está manejando. Sospecho que sabiendo el valor de
ctl00
ContentPlaceHolder1
GVDocumentos
ctl02
lnkPDF
se puede montar la url, ¿No será que "$" es concatenador de cadenas y simplemente está montando la url con esas partes?
Sí que se puede. No directamente (por lo menos yo no he podido), pero si insertando código dhtml en la página, por ejemplo un objeto con un campo oculto para meter el valor de la variable y luego recuperarlo con las funciones _IE.... . Eso ya lo he hecho en algunos post por aquí. Solo hay que buscar en el foro :smt002 .
Pero aunque se pueda recuperar, en este caso, parece que le envía al servidor una cadena de texto, no unas variables con valores asignados. Seguramente, el servidor separará esta cadena, mirará los valores que genera estos datos que dices (en el servidor sí puede que se comporten como variables), y retornarán al cliente estos valores. Todo esto es teórico. Habría que ver el código.

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 ;).
Responder