Autor
|
Tema: Separar partes de un un html code (Leído 3,792 veces)
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
A ver, tengo un archivo .html inmenso y necesito sacar cierta información dentro de unos tags. Tengo que sacar del .html todo lo que esté entre medio de <a href=" hasta "><img class= Esta sería parte del código: <a href="xfire:add_friend?user=mrdogbertt"><img class= Y esto lo que necesito obtener: xfire:add_friend?user=mrdogbertt Estoy usando este código: Private Function ExtractInfo(ByVal strstring As String, ByVal starttag As String, ByVal endtag As String) As String ExtractInfo = Mid(strstring, Len(starttag) + 1, Len(strstring) - Len(endtag) - Len(starttag)) End Function
Private Sub Command1_Click() MsgBox ExtractInfo(Text1.Text, "<a href", "><img class") End Sub
Pero no me funciona en lo más mínimo, me corta partes del código que nada que ver, y aparte hay muchos de estos en el mismo html, y me obtendría sólo 1 o todos juntos, y yo necesito obtenerlos 1 por 1 Ideas? sugerencias? ejemplos? soluciones? ayuda? algo?
|
|
|
En línea
|
|
|
|
Elemental Code
Desconectado
Mensajes: 622
Im beyond the system
|
Quiero que busques en este foro con muuucho cuidado, Mr.Frog tiene unos codigos para manipular codigo html. Con uno lo obtenes y con otro lo limpia o algo asi. Buscalo son las 01:11 de la matina, me voy a hacer noni
|
|
|
En línea
|
I CODE FOR $$$ Programo por $$$ Hago tareas, trabajos para la facultad, lo que sea en VB6.0 Mis programas
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Function getXfire(ByVal tStr As String) As String Dim i As String Dim f As String tStr = LCase(tStr) i = InStr(tStr, "<a href=") f = InStr(tStr, "<img class") If i = 0 Or f = 0 Then getXfire = "No hay!": Exit Function getXfire = Mid(tStr, i + 9, f - i - 11) End Function
checalo
|
|
|
En línea
|
|
|
|
yalosabes
Desconectado
Mensajes: 87
|
ahmm ..spero q t sirva ste codigo Private Sub ListarUrl() Dim i As Integer List1.Clear For i = 0 To wb1.Document.links.length - 1 List1.AddItem wb1.Document.links.Item(i) List2.AddItem wb1.Document.All.tags("a").Item(i).innerText Next End Sub
donde dice "a" puedes poner "td" "img" "div" .. o lo que kieras... en el ejemplo estoy sakando el texto con su respectiva url.. en los list distintos
|
|
« Última modificación: 22 Febrero 2011, 13:41 pm por raul338 »
|
En línea
|
|
|
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
Bueno, funcionar funciona... con el código de ignorantev1.1... pero me toma únicamente la primera y me corta el resto del código donde se encuentran los otros links que quiero obtener.
Tengo el código html en un textbox, y estoy llamando a la función de esta manera:
call getXfire(Text1.Text)
Hay alguna manera de que no me corte el texto en Text1 sino que lo mande a otro textbox?
Agrego: Lo hice de una manera menos "elite", a puro sendkeys, tabs y enters, jajajaj, pero para mi sorpresa funciona y funciona excelente.
Gracias a todos por la ayuda!!! si alguien tiene el mismo objetivo que yo me dicen y les paso el source.
Saludos.-
|
|
« Última modificación: 22 Febrero 2011, 07:50 am por extreme69 »
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Dios mio... SendKeys() para este tipo de cosas no por favor. Te dejo aquí una funcion para sacar el texto entre dos palabras, para esto creo que te funcionará, sino otra opción será usar RegExp. Código: 'by Mr.Frog™ Public Function TextBetweenWords(ByRef strText$, ByRef strWord1$, ByRef strWord2$) As String Dim lngPos1&, lngPos2&, lngStart& lngPos1 = InStr(strText, strWord1) If lngPos1 Then lngStart = lngPos1 + LenB(strWord1) \ 2 lngPos2 = InStr(lngStart, strText, strWord2) If iPosition2 Then TextBetweenWords = Mid$(strText, lngStart, lngPos2 - lngStart) End If End If End Function
Ejemplo: Private Sub Form_Load() Msgbox TextBetweenWords("<a href=""xfire:add_friend?user=mrdogbertt""><img class=", "<a href=""", """><img class=") End Sub
Resultado: xfire:add_friend?user=mrdogbertt No tengo el vb ahora, pero debería funcionar. DoEvents!
|
|
|
En línea
|
|
|
|
extreme69
Desconectado
Mensajes: 178
Be BlackHat but don't forget your principles.
|
jajajajaja Si, ya sé soy un cochino... quedó un poco bugueado con sendkeys, tabs y enters, pero bueno, el 90% de los links los carga sin problemas. Incluso agregué botones para loguear y desloguear El problema es que tengo el código html cargado en un textbox, pero el resultado debería ir a otro textbox y como si fuese poco hay muchos links, no sólo 1, debería tomar 1x1, ir poniendolos en el otro textbox (el de la url) e ir visitando cada link extraído, y la verdad no se me ocurrió el como. Para que tengas una idea de lo que hice... http://www.xfire.com/communities/dignitas/roster/Si estás logueado al entrar a ese link vas a ver que cada usuario debajo tiene un "+" para agregarlo como amigo.
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Te dejo un ejemplo con RegExp que te saca todas las coincidencias. No quedaría mejor cargar la info en un ListBox en vez de un TextBox?? 'by Mr.Frog™ Public Function GetXFireText(ByRef strText$) As String() Dim objMatches As Object, objRegExp As Object Dim strTmp$(), lngTotal&, Q& Set objRegExp = CreateObject("VBScript.RegExp") With objRegExp .Pattern = "\<a href\=""(\S+)""\>\<img class\=" .Global = True .IgnoreCase = True End With Set objMatches = objRegExp.Execute(strText) lngTotal = objMatches.Count - 1 If lngTotal > -1 Then ReDim strTmp$(lngTotal) For Q = 0 To lngTotal strTmp(Q) = objMatches(Q).SubMatches(0) Next Q GetXFireText = strTmp End If Set objRegExp = Nothing End Function
Ejemplo: Private Sub Form_Load() Text1.Text = "<a href=""xfire:add_friend?user=mrdogbertt""><img class=" '// Text1 -> contenido html Text2.Text = Join$(GetXFireText(Text1.Text), vbCrLf) '// Text2 -> textbox destino End Sub
DoEvents!
|
|
« Última modificación: 22 Febrero 2011, 13:40 pm por Mr.Frog™ »
|
En línea
|
|
|
|
ignorantev1.1
Desconectado
Mensajes: 617
/\ Así acabo cuando quiero programar...
|
Function getXfire(ByVal tStr As String, ByVal fPar As String, ByVal lPar As String) As String Dim i As Long Dim f As Long Dim isValid As Boolean tStr = Replace(LCase(tStr), vbCrLf, "") tStr = Replace(tStr, vbTab, "") i = InStr(tStr, fPar) f = InStr(i + Len(fPar) + 1, tStr, Chr$(34)) While i > 0 And f > 0 If Mid(tStr, f + 2, Len(lPar)) = lPar Then getXfire = getXfire & Mid(tStr, i + Len(fPar) + 1, f - i - Len(fPar) - 1) isValid = True End If i = InStr(f + 1, tStr, fPar) f = InStr(i + Len(fPar) + 1, tStr, Chr$(34)) If i > 0 And f > 0 And isValid Then getXfire = getXfire & vbCrLf isValid = False Wend End Function Private Sub Command1_Click() Text2 = getXfire(Text1, "<a href=", "<img") '--> Lo que este en "<a href=" lo guardara sin comillas, siempre y cuando este junto a una etiqueta "<img" End Sub
A ver que tal este
|
|
« Última modificación: 22 Febrero 2011, 16:55 pm por ignorantev1.1 »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Youtube.com Vulnerable to HTML Code Injection
Nivel Web
|
TinKode
|
5
|
3,887
|
5 Julio 2010, 10:41 am
por TinKode
|
|
|
Google.com vulnerable to XSS (HTML Code Injection)
Bugs y Exploits
|
TinKode
|
9
|
6,558
|
3 Diciembre 2010, 23:33 pm
por TinKode
|
|
|
[Ayuda] separar cadena en partes
Programación C/C++
|
sabeeee
|
4
|
2,899
|
10 Enero 2015, 02:12 am
por sabeeee
|
|
|
¿Cómo separar unos botones html & css?
« 1 2 »
Desarrollo Web
|
WIитX
|
11
|
18,359
|
1 Noviembre 2015, 18:12 pm
por WIитX
|
|
|
Convertir manualmente partes de un archivo html a csv
Desarrollo Web
|
Esgrimidor
|
2
|
2,465
|
13 Septiembre 2017, 16:57 pm
por Esgrimidor
|
|