Autor Tema: Ir al final de una web.  (Leído 8200 veces)

0 Usuarios y 1 Visitante están viendo este tema.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Ir al final de una web.
« Respuesta #15 en: Mayo 29, 2012, 07:21:43 am »
Perdona Yvan que no ponga los cometarios, eso hace mucho mas facil las cosas, asi que bueno te pongo la funcón con sus comentarios, espero que lo entiendas ya que venis un poco confuso con algunas cosas.

Código: (vb) [Seleccionar]
Private Function GetLastComent(ByVal sUrl As String, ByRef sUrlComment As String, ByRef sAutor As String, ByRef sDateComment As String, ByRef sMessage As String) As Boolean
    On Error Resume Next
    Dim m_Inet As Object
    Dim HtmlDOC As Object
    Dim iLast As Integer
    Dim Element As Variant
    Dim sLastAnchor As String
    Dim i As Integer
   
    'Aqui se crea un objeto para obtener el html del la pagina en cuestion, algo asi como si usaras un webbrowser u otros cuantos metodos para lograr este mismo objetivo.
    Set m_Inet = CreateObject("MSXML2.ServerXMLHTTP")
    'aqui se indica que usamos el metodo "GET" ya que tambien existe el "POST" pero este no es el caso ,
    'segundo parametro la url en cuestion y tercer parametro que no se trabaja de forma asincrona esto es lo que produce un pequeño cuelgue dela aplicacion hasta que termina de descargar el html
    m_Inet.open "GET", sUrl, False
    'enviamos la petición
    m_Inet.send
   
    'si el estado de la peticion es 200 en el protocolo html significa que esta ok
    If m_Inet.Status = 200 Then
        'este objecto se crea un objeto "Document" muy conosido en la parte javascript de html, el cual lo creamos para obtener texto plano a partir del html.
        Set HtmlDOC = CreateObject("htmlfile_FullWindowEmbed")
        'indicamos que el cuerpo del documento es la repuesta de nuestra peticion html
        HtmlDOC.body.innerhtml = m_Inet.responsetext 'StrConv(m_Inet.responseBody, vbUnicode)
 
        'en esta linea averiguamos cuantas anclas hay
        iLast = HtmlDOC.anchors.length - 1
 
        'hacemos un bucle desde la utlima hasta la primera
        For i = iLast To 0 Step -1
            'de darse esta condicion obtenemos cual es la ultima ancla
            If InStr(HtmlDOC.anchors.Item(i).href, "#") > 0 Then
               sLastAnchor = Mid$(HtmlDOC.anchors.Item(i).href, InStr(HtmlDOC.anchors.Item(i).href, "#") + 1)
               Exit For
            End If
        Next
         
        If sLastAnchor <> "" Then sUrlComment = sUrl & "#" & sLastAnchor
   
        'aqui lo que se hace es obtener lo referido al ultimo comentario, lo cual utilizamos el ancla como referencia.
        'segurmente hay otro metodo de llegar al mismo lugar en forma gerarquica como una coleccion, pero yo use este que es el que me salio.
        For Each Element In HtmlDOC.getElementById(sLastAnchor).All
            Select Case Element.className
                Case "Message"
                    sMessage = Element.innertext
                Case "DateCreated"
                    sDateComment = Element.innertext
                Case "Author"
                    sAutor = Element.innertext
            End Select
        Next
    End If
   
    GetLastComent = Err.Number = 0
   
    'Nota: es importate ver el html de la pagina para poder entender estas ultimas lineas ademas ver que es progrmacion de javascript.
    'como se utilizo CreateObject no se despliega el menu con las propiedades del objecto, para que esto suseda se deve agregar las referencias de los objetos correspondiente.

End Function

y bien para el problema de la ultima pagina te tiro una pista un consulta siempre la primera, en la pirmera tenes que ver si devajo esta paginando



como ves este post http://www.forum.planetnoize.com/index.php?p=/discussion/51/se-cayo-peruhardware-ya-regreso
tiene 8  paginas, bien si parseas el html y buscas cual es el utlimo numero que figura podes saber tu nueva pagina a consultar que en este caso seria esta
http://www.forum.planetnoize.com/index.php?p=/discussion/51/se-cayo-peruhardware-ya-regreso/p8
por lo tanto tendrias que agregarle al pimer link  "/p8" claro todo esto requiere una peticion mas, por lo que la app se te va a colgar mas aun.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Ir al final de una web.
« Respuesta #16 en: Mayo 29, 2012, 11:50:55 am »
Gracias Leandro y aclaro amigo que no era un reclamo de mi parte, sino comentaba lo que iba entendiendo y que por lo visto era poco :)
Muchísimas gracias por la explicación al detalle que ahora si me ha quedado muy claro, entiendo entonces por donde viene el tema, le voy a meter una estudiada a este asunto que ha empezado a gustarme.

Gracias amigo
Me encuentras en YAcosta.com