Extraer informacin de pgina web

Me interesa sacar unos datos de una pgina web. Quiero ver si mi procedimiento es el correcto.

  • Con HTTPSocket pido el URL y lo pongo en un String s.
  • a ese string (s) le hago un split y lo asigno a un array. El split lo hago al encontrar “/table”
  • el Ubound del array es de 18 y encuentro que la informacin est en el 2
  • veo que hay unos valores nicos dividiendo la informacin “Celda 1” y hago un split de ello asignando a otro array
  • el array(0) no tiene informacin importante, los dems si tiene cada uno un par de datos importantes, una fecha y un valor.
  • usar un InStr para encontrar la identificacin antes de la fecha y sacar la fecha. Se encuentra en formato DD-MM-YYYY
  • volver a usar InStr iniciando despus del anterior (el valor de bsqueda es el mismo) y extraer el valor en formato 99.999999

Este es el cdigo que extraigo en el primer split y quiero analizar:

[code]

Fecha Valor
01-12-2017 18.622900
04-12-2017 18.639900
05-12-2017 18.642000
06-12-2017 18.695800
07-12-2017 18.889700
[/code]

La duda es, voy bien? o me estoy complicando la vida

Saludos

Segu haciendo pruebas (es la forma en la que entiendo cmo funcionan las cosas) y vi informacin sobre el RegEx.

Ya teniendo ese bloque en un string pude usar el siguiente cdigo:

[code]Dim rg As New RegEx
Dim rv As New RegEx
Dim myMatch,myMatchV As RegExMatch
rg.SearchPattern = “\d\d-\d\d-\d\d\d\d”
rv.SearchPattern = “\d\d.\d\d\d\d\d\d”
myMatch = rg.Search(s2)
myMatchV = rv.Search(s2)

Do
if myMatch <> Nil and myMatchV <> Nil Then
MsgBox (myMatch.SubExpressionString(0) + " " + myMatchV.SubExpressionString(0))
Else
MsgBox “no encontrado”
End if
myMatch = rg.Search
myMatchV = rv.Search
loop until myMatch is Nil[/code]

y funcion (pude obtener los pares de datos de Fecha/Valor en cada MsgBox. A la hora de decidir el usar el String inicial con toda la pgina, me dio unos valores diferentes a los esperados para Valor. Ya despus de un rato de probar otras opciones me di cuenta que el . en rv.SearchPattern es wildcard (duh!), al cambiar . por \W ya funciona con el texto completo de la pgina sin tener que hacer un split.

Usar RegEx es mas directo que hacer varios splits y usar InStr. Es mas cmodo hacerlo as, pero no se si se usan mas recursos o menos. Por el momento no me voy a preocupar por ello.

Cualquier comentario bienvenido.

Veo que tena mal:

rv.SearchPattern = "\\d\\d.\\d\\d\\d\\d\\d\\d"

despus de leer mas la documentacin lo he puesto as:

rv.SearchPattern = "\\d{1,3}\\.\\d{4,6}"

Existen valores pasados con slo 1 dgito antes del punto en lugar de 2. Con esto me preparo por si llega a tener 3 en el futuro. No veo necesario revisar si hay 4 decimales (posiciones despus del punto) ya que hasta el momento slo han mostrado 6 con los ltimos 2 en cero.

Me encontr con otro sitio de internet que da acceso via API y usa JSON para enviar los resultados.

Decid mejor usar esa herramienta que jalar la informacin de una pgina web.