Autor
|
Tema: Pregunta rápida sobre programa: Bajar imágenes de internet (Leído 4,366 veces)
|
Agente Naranja
Desconectado
Mensajes: 535
uguu~
|
Hola, se me ha ocurrido hacer un programa que baje una lista de imágenes de una página web, tipo Flickr, pero hacerlo en C++ se me haría bastante pesado, y he pensado que aprovecharía Visual basic para hacerlo, dada la facilidad de hacer interfaces gráficas en este lenguaje. Pero mientras aprendo lo básico del lenguaje, me gustaría que me dijerais qué controles debo usar para cada una de las siguientes tareas, o que me dierais una recomendación sobre qué documentación leer, porque todo lo que encuentro de VB en internet es para crear HTML, y yo no quiero hacer eso. 1 - Descargar una página HTML y almacenar el contenido en alguna variable para luego 2 - Usar un parser XML para buscar las etiquetas IMG y copiar las URL de cada una, además buscar las etiquetas de enlace <A> para comprobar si hay más páginas de imágenes 3 - Descargar a una carpeta todas las imágenes. Bueno, eso es lo que quiero hacer, no pido que me vais a hacer el código, ni mucho menos, solamente quiero saber qué funciones debería aprender, o qué controles voy a necesitar. Gracias a todos
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Bueno, te respondo a tus pasos con codigos 1_Public Function ReadURL(ByVal sURL As String) As String Dim oWinHTTP As Object 'As New WinHttp.WinHttpRequest Set oWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") With oWinHTTP Call .Open("GET", sURL) Call .Send ReadURL = .ResponseText End With Set oWinHTTP = Nothing End Function
3_ (Se puede hacer de muchas formas...) 'URLMON Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long Public Function DownloadToFolder(ByVal sURL As String, ByVal sFolder As String) As Boolean Dim sPath As String If Right$(sFolder, 1) <> "\" Then sFolder = sFolder & "\" sPath = sFolder & Mid$(sURL, InStrRev(sURL, "/") + 1) DownloadToFolder = (URLDownloadToFile(ByVal 0&, sURL, sPath, ByVal 0&, ByVal 0&) = 0) End Function
Lo de parsear te lo dejo a ti, es facil (Split, Mid, Instr... blah, blah..xD) Saludos
|
|
|
En línea
|
|
|
|
Agente Naranja
Desconectado
Mensajes: 535
uguu~
|
Ok, muchas gracias, ahora estoy usando la primera función, y estoy tratando de ver cómo hacer que durante el tiempo que dura la petición me muestre un mensaje "cargando" y que se detenga al acabar. He visto que el objeto winHTTP tiene algunos eventos como OnResponseFinished(), pero no se bien cómo usarlos. ¿He de declararlos como SUB dentro del evento del botón? O sea sería algo como... Private Sub button1_click() Private Sub oWinHTTP_OnResponseFinished ..... End Sub End Sub
No lo se, estoy tratando de buscar la forma de usar esos eventos pero te digo que no tengo casi idea de Basic, así que perdona si hago alguna pregunta que parezca elemental o si el código no tiene sentido
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
No, no se puede poner un Sub dentro de otro... al menos no asi tal cual... Si lo que quieres es utilizar los eventos del WinHTTP entonces tendras que declararlo con eventos... mira este ejemplo: (Recuerda añadir el componente Microsoft HTTP)Option Explicit Dim WithEvents oWinHTTP As WinHttp.WinHttpRequest Private Sub Form_Load() Set oWinHTTP = New WinHttp.WinHttpRequest Debug.Print ReadURL("https://foro.elhacker.net/programacion_vb-b50.0/") End Sub Public Function ReadURL(ByVal sURL As String) As String ' Dim oWinHTTP As Object 'As New WinHttp.WinHttpRequest ' ' Set oWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") With oWinHTTP Call .Open("GET", sURL) Call .Send ReadURL = .ResponseText End With ' Set oWinHTTP = Nothing End Function Private Sub oWinHTTP_OnResponseStart(ByVal Status As Long, ByVal ContentType As String) MsgBox "Se inicio la descarga" End Sub Private Sub oWinHTTP_OnResponseFinished() MsgBox "Se finalizo la descarga!!" End Sub
Saludos
|
|
|
En línea
|
|
|
|
Agente Naranja
Desconectado
Mensajes: 535
uguu~
|
Creo que eso es lo que me pasa, que no sé como agregar el componente HTTP. Acabo de agregar una referencia a winhttp.dll, de esta forma no me dice que no está definido WinHttpRequest, pero aún sigo luchando por que me salga un anuncio al acabar la carga. Option Explicit On Public Class Form1 Dim WithEvents oWinHTTP As WinHttp.WinHttpRequest Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load oWinHTTP = New WinHttp.WinHttpRequest End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim regreso As String lblEstado.Text = "Cargando..." oWinHTTP.Open("GET", txtURL.Text) oWinHTTP.Send() regreso = oWinHTTP.ResponseText txtTexto1.Text = regreso End Sub Private Sub oWinHTTP_OnResponseFinished() lblEstado.Text = "Finalizado" End Sub End Class
Con este código obtengo: Excepción del tipo 'System.ArgumentException' en Microsoft.VisualBasic.dll Excepción del tipo 'System.ArgumentException' en WindowsApplication1.exe Excepción del tipo 'System.Runtime.InteropServices.COMException' en WindowsApplication1.exe
|
|
« Última modificación: 26 Junio 2009, 19:48 pm por agente_naranja »
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Eso que tu haces no es VB6.... Lo lamento, pero odio .NET
|
|
|
En línea
|
|
|
|
Agente Naranja
Desconectado
Mensajes: 535
uguu~
|
Yo es que ni idea de si es o no .NET, me he bajado el visual basic express 2008 y ni idea si es .NET o qué. Vaya lio para programar una sola aplicación, me está sacando de quicio. Ahora bien, sabiendo lo que quiero hacer, ¿tú recomendarías algún otro lenguaje? No se, alguien me dice que con python, pero me gustaría tener una GUI para que se viera mejor la cosa. Pero Basic me está dando bastantes dolores de cabeza (y eso que solo llevo un día ) AÑADO: He pensado una cosa, que llevo tiempo aprendiendo C/C++ y ahora que tengo que hacer un programa, ¿qué se me ocurre? Cambiar a otro lenguaje. Pues no! Me voy a pasar de nuevo a C++, para algo ha de servir todo lo que he aprendido Saludos y gracias de todos modos.
|
|
« Última modificación: 26 Junio 2009, 20:29 pm por agente_naranja »
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Bueno, con C lo tienes que hacer con APIs... OpenURL* Para sacar el codigo de un URL... y para los formularios puedes hacerlo igual con C... Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pregunta rapida XSS
Nivel Web
|
Tracxus
|
4
|
3,778
|
9 Enero 2011, 19:36 pm
por KrossPock
|
|
|
[html cache] Pregunta rapida
Desarrollo Web
|
[u]nsigned
|
1
|
2,190
|
30 Mayo 2012, 07:25 am
por WarGhost
|
|
|
Pregunta sobre internet
Dudas Generales
|
matiapache12
|
4
|
2,625
|
1 Diciembre 2016, 04:15 am
por engel lex
|
|
|
Pregunta rápida
Desarrollo Web
|
Leguim
|
2
|
2,763
|
24 Septiembre 2020, 12:10 pm
por Drakaris
|
|
|
[Pregunta]: Pregunta rápida y sencilla sobre el siguiente código.
Desarrollo Web
|
Leguim
|
4
|
3,711
|
14 Octubre 2020, 21:27 pm
por Leguim
|
|