Autor
|
Tema: Obtener datos de la sbs (Leído 4,081 veces)
|
dany22_
Desconectado
Mensajes: 7
|
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 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
Mensajes: 55
|
Que problemas tienes actualmente?
|
|
|
En línea
|
|
|
|
dany22_
Desconectado
Mensajes: 7
|
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
Mensajes: 55
|
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
Mensajes: 7
|
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
|
|
|
|
|
dany22_
Desconectado
Mensajes: 7
|
Ok le voy a dar una revisada y te aviso si consegui algo
|
|
|
En línea
|
|
|
|
Spectatorem
Desconectado
Mensajes: 55
|
Ok le voy a dar una revisada y te aviso si consegui algo
Perfecto.
|
|
|
En línea
|
|
|
|
dany22_
Desconectado
Mensajes: 7
|
tambien tengo este codigo quizas es a lo que te refieres 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
Mensajes: 55
|
Ese me hace mas sentido, no te funciona ese?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Obtener Datos de una Imagen
Diseño Gráfico
|
pisagatos
|
4
|
4,060
|
24 Marzo 2006, 05:47 am
por aNexos
|
|
|
obtener datos de red
Programación Visual Basic
|
nahuelveronesi
|
2
|
2,948
|
13 Octubre 2009, 19:37 pm
por BlackZeroX
|
|
|
Loguear en Web y obtener datos
Java
|
Nobody12
|
1
|
2,576
|
23 Octubre 2011, 21:34 pm
por Leyer
|
|
|
obtener datos de una web
Hacking
|
jadsera
|
4
|
4,110
|
14 Enero 2012, 18:21 pm
por H1tchclock
|
|
|
Problema obtener datos de PIP_ADAPTER_INFO
Programación C/C++
|
Kaxperday
|
8
|
2,902
|
9 Julio 2015, 10:53 am
por Kaxperday
|
|