elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Obtener datos de la sbs
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Obtener datos de la sbs  (Leído 3,693 veces)
dany22_

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Obtener datos de la sbs
« en: 3 Julio 2015, 16:12 pm »

Estimados amigos muy buenos dias, quisiera que por favor me ayuden a que este codigo funcione. Lo que pretendo es extraer datos de esta pagina de la sbs. http://www.sbs.gob.pe/app/spp/Afiliados/afil_detalle.asp?tp=2&tip_doc=00&num_doc=00000000

Código:

Imports System.Collections.Generic

Imports System.Linq
Imports System.Net
Imports HtmlAgilityPack
Imports System.Text.RegularExpressions
Imports System.IO
Imports System.Web
Public Class Form2
   
    Sub obtener()
        Try
            Dim document As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument()
            document.LoadHtml("http://www.sbs.gob.pe/app/spp/Afiliados/afil_detalle.asp?tp=2&tip_doc=00&num_doc=00000000")
            Dim NodesTr As HtmlAgilityPack.HtmlNodeCollection = document.DocumentNode.SelectNodes("//table[@id='TblDetalle']//tr")
            If NodesTr IsNot Nothing Then
                Dim dt As New DataTable()
                dt.Columns.Add("DATO1", GetType(String))
                dt.Columns.Add("DATO2", GetType(String))

                Dim iNumFila As Integer = 0
                For Each Node As HtmlNode In NodesTr
                    If iNumFila > 0 Then
                        Dim iNumColumna As Integer = 0
                        Dim dr As DataRow = dt.NewRow()
                        For Each subNode As HtmlNode In Node.Elements("td")
                            If (iNumColumna = 0) Then dr = dt.NewRow()
                            Dim sValue As String = subNode.InnerHtml.ToString().Trim()
                            sValue = System.Text.RegularExpressions.Regex.Replace(sValue, "<.*?>", " ")
                            dr(iNumColumna) = sValue
                            iNumColumna += 1
                            If iNumColumna = 2 Then '3
                                dt.Rows.Add(dr)
                                iNumColumna = 0
                            End If
                        Next
                    End If
                    iNumFila += 1
                Next
                dt.AcceptChanges()
                Me.dgvHtml.DataSource = dt
                Me.dgvHtml.ReadOnly = True
                Me.dgvHtml.Columns(0).HeaderText = "DATO1"
                Me.dgvHtml.Columns(1).HeaderText = "DATO2"
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
   
   
End Class


En línea

Spectatorem

Desconectado Desconectado

Mensajes: 55



Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #1 en: 3 Julio 2015, 16:24 pm »

Que problemas tienes actualmente?


En línea

dany22_

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #2 en: 3 Julio 2015, 16:27 pm »

No consigo obtener el codigo fuente de la pagina en mension. Reemplazando el 00000000 por un numero de dni valido me deberia arrojar los datos del afiliado y ese codigo es que deberia obtener pero nada
« Última modificación: 3 Julio 2015, 16:29 pm por dany22_ » En línea

Spectatorem

Desconectado Desconectado

Mensajes: 55



Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #3 en: 3 Julio 2015, 16:40 pm »

Yo creo que primero debes mandar la peticion, el resultado de la peticion colocar en tu objeto HtmlAgilityPack y ahí recien procesar lo que quieres.
En línea

dany22_

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #4 en: 3 Julio 2015, 16:43 pm »

No entiendo muy bien lo que quieres decir, lo que pasa es que no se mucho sobre esto de hecho este codigo es un ejemplo que obtuve buscando en internet.
En línea

Spectatorem

Desconectado Desconectado

Mensajes: 55



Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #5 en: 3 Julio 2015, 16:45 pm »

No entiendo muy bien lo que quieres decir, lo que pasa es que no se mucho sobre esto de hecho este codigo es un ejemplo que obtuve buscando en internet.
Que antes de procesar un html, debes tenerlo mediante una peticion mira esta clase

http://htmlagilitypack.codeplex.com/SourceControl/latest#Branches/2.0.Experimental/HtmlAgilityPack/HtmlWeb.cs
En línea

dany22_

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #6 en: 3 Julio 2015, 16:59 pm »

Ok le voy a dar una revisada y te aviso si consegui algo
En línea

Spectatorem

Desconectado Desconectado

Mensajes: 55



Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #7 en: 3 Julio 2015, 17:01 pm »

Ok le voy a dar una revisada y te aviso si consegui algo

Perfecto.
En línea

dany22_

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #8 en: 3 Julio 2015, 17:03 pm »

tambien tengo este codigo quizas es a lo que te refieres

Código:
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports HtmlAgilityPack
Imports System.Text.RegularExpressions
Imports System.IO
Imports System.Web
Public Class Form2
    Dim doc2 As New HtmlAgilityPack.HtmlDocument()
    Dim wc As New WebClient
    Dim regexTrim As New Regex("\s\s", RegexOptions.Compiled)
    Private bConsultado As Boolean = False
    Private bResultado As Boolean = False
    Private sHtml As String = ""
    Private periodo As String = ""

 
    Public Function Consultar(ByVal dni As String) As resultados
        Dim elemento As HtmlNode
        Dim tablaStr As String
x:
        Dim bytes As Byte()
        bytes = wc.DownloadData("http://www.sbs.gob.pe/app/spp/Afiliados/afil_detalle.asp?tp=2&tip_doc=00&num_doc=" & dni)
        Using sr As New StreamReader(New MemoryStream(bytes))
            doc2.LoadHtml(HttpUtility.HtmlDecode(sr.ReadToEnd()))
        End Using
        elemento = doc2.DocumentNode.SelectSingleNode("//html")
        If elemento Is Nothing Then
            GoTo x
        End If
        ' posible bucle infinito
        tablaStr = elemento.InnerHtml
        MsgBox(tablaStr)
        ' posible bucle infinito (poco probable)
        Dim result As New resultados()
        If tablaStr.Contains("Documento de Identidad no registrado en el SPP.") Then
            result.Estado = resultados.RucState.NoExiste
            Return result
        End If

        ' nombre comercial
        result.EstadoContribuyente = ObtenerContenido(elemento, "Apellido Paterno")
        ' estado del contribuyente
        result.CondiciónContribuyente = ObtenerContenido(elemento, "Primer Nombre")
        ' condición del contribuyente
        result.Dirección = ObtenerContenido(elemento, " Fecha Nacimiento")
        ' dirección
        Return result
    End Function
    Private Function ObtenerContenido(tabla As HtmlNode, index As String) As String
        Dim elemento As HtmlNode = Nothing

        For Each e As HtmlNode In tabla.ChildNodes
            If Not String.IsNullOrEmpty(e.InnerText) AndAlso e.InnerText.Contains(index) Then
                elemento = e
                Exit For
            End If
        Next

        If elemento Is Nothing OrElse elemento.ChildNodes.Count = 0 Then
            Return String.Empty
        End If
        Return TrimAll(elemento.ChildNodes(3).InnerText)
    End Function
    Private Function TrimAll(str As String) As String
        While regexTrim.IsMatch(str)
            str = regexTrim.Replace(str, " ")
        End While

        Return str.Trim()
    End Function
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim result As resultados = Consultar("06454380")

        Select Case result.Estado
            Case resultados.RucState.NoExiste
                MessageBox.Show("El RUC no existe.")
            Case resultados.RucState.Normal
                TextBox1.Text = "Número de RUC: " & result.RUC & vbNewLine &
                                        "Tipo Contribuyente: " & result.TipoContribuyente & vbNewLine &
                                        "Tipo de Documento: " & result.TipoDocumento
        End Select

    End Sub
End Class
Public Class resultados

    Public Estado As RucState
    Public RUC As String
    Public TipoContribuyente As String
    Public TipoDocumento As String
    Public NombreComercial As String
    Public EstadoContribuyente As String
    Public CondiciónContribuyente As String
    Public Dirección As String

    Public Enum RucState
        Normal
        NoExiste
    End Enum
End Class
En línea

Spectatorem

Desconectado Desconectado

Mensajes: 55



Ver Perfil
Re: Obtener datos de la sbs
« Respuesta #9 en: 3 Julio 2015, 17:15 pm »

Ese me hace mas sentido, no te funciona ese?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Obtener Datos de una Imagen
Diseño Gráfico
pisagatos 4 3,849 Último mensaje 24 Marzo 2006, 05:47 am
por aNexos
obtener datos de red
Programación Visual Basic
nahuelveronesi 2 2,804 Último mensaje 13 Octubre 2009, 19:37 pm
por BlackZeroX
Loguear en Web y obtener datos
Java
Nobody12 1 2,429 Último mensaje 23 Octubre 2011, 21:34 pm
por Leyer
obtener datos de una web
Hacking
jadsera 4 3,887 Último mensaje 14 Enero 2012, 18:21 pm
por H1tchclock
Problema obtener datos de PIP_ADAPTER_INFO
Programación C/C++
Kaxperday 8 2,567 Último mensaje 9 Julio 2015, 10:53 am
por Kaxperday
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines