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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Httpclient obtener datos de la web del Seniat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Httpclient obtener datos de la web del Seniat  (Leído 5,234 veces)
JNell

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Httpclient obtener datos de la web del Seniat
« en: 9 Marzo 2013, 19:33 pm »

Buenas, soy nuevo aca en el foro, ya lei las reglas de antes del post y esas cuestiones, si tengo algun error avisenme, que aca nadie nace siendo perfecto.  ::)
Bueno para empezar, tengo un codigo de varios ejemplos que encontre navegando en la web, solo le implemente algunas cosas como envio de parametros, y agrege ciertas cosas a lo que necesito... mi idea es hacer lo que menciono en el titulo.... "Obtener datos de la web del Seniat"
http://contribuyente.seniat.gob.ve/BuscaRif/BuscaRif.jsp  <<< Esta es la web.
El problema es que al ser .jsp "javascrip" me es diferente a la mayoria de las webs.
 :( :-(
Para no enrrollarme tanto lo pondre con ejemplos,
en la web del seniat utilizo el rif J299191388 .. luego le doy "buscar" y luego me genera el nombre de la empresa, etc, etc... Lo que quiero es obtener ese nombre que seguramente esta hecho en alguna parte del body en html (para ello probe usando firebug... bastante util). Quiero capturar ese nombre parsearlo a un String entendible y plasmarlo ya sea en un jtextfield o area... en fin esto sera para el final, lo que primero necesito es lograr el envio de parametros y capturar ese nombre y parsear ese codigo html... No soy de las personas que vienen a pedir cosas asi como asi.. de modo que para el parseo lo que mas he visto por internet es Json y Json...

Bueno ahora el codigo... esto fue en base a muchos ejemplos que encontre en la web, adaptado mas o menos a lo que yo trato de hacer... esta hecho en base a esta web. "Que no es .jsp"
http://www.spritmonitor.de/en/

Código
  1. package conectseniat;
  2.  
  3. import java.io.*;
  4. import java.util.ArrayList;
  5. import org.apache.http.HttpEntity;
  6. import org.apache.http.HttpResponse;
  7. import org.apache.http.client.ClientProtocolException;
  8. import org.apache.http.client.HttpClient;
  9. import org.apache.http.client.entity.UrlEncodedFormEntity;
  10. import org.apache.http.client.methods.HttpGet;
  11. import org.apache.http.client.methods.HttpPost;
  12. import org.apache.http.impl.client.DefaultHttpClient;
  13. import org.apache.http.message.BasicNameValuePair;
  14. // Librerias utilizadas, HttpComponents de Apache.
  15. // HttpClient... ojo no de las que vienen con el IDE asi que a bajarlas....
  16.  
  17. /**
  18.  *
  19.  * @author Nell
  20.  */
  21. public class ConectSeniat {
  22.  
  23.    /**
  24.      * @param args the command line arguments
  25.      */
  26.  
  27.    public static void main (String[] args){
  28.  
  29.  
  30. HttpClient httpclient = new DefaultHttpClient();
  31. HttpResponse response;
  32. // Esta página guarda la autentificación en una cookie, por ello lo primero es
  33. // acceder a la web donde está el formulario de registro
  34. HttpGet httpget = new HttpGet("http://www.spritmonitor.de/en/");      
  35. try {
  36. response = httpclient.execute(httpget);
  37. System.out.println("Estado: " + response.getStatusLine().toString()); // Esto solo para comprobar los estados, los mas comunes 200 / 302 / 404
  38. HttpEntity entity = response.getEntity();  
  39. entity = response.getEntity();        
  40. if (entity != null) {
  41. // Consumimos los datos de la respuesta para liberar al cliente y poder hacer más peticiones
  42. entity.consumeContent();
  43. // Especificamos la url donde irán los datos al ejecutarse la acción SUBMIT junto con los datos de autentificación
  44. // username y password se corresponden con el nombre de los fields en el formulario
  45. HttpPost httppost = new HttpPost("http://www.spritmonitor.de/en/login.html?action=login&;username=username&password=password");
  46. // Enviando parametros por httppost a la web.
  47. // Aca segun lo que necesito, "Leer el foro" sobre lo del seniat, el parametro es:
  48. // @params p_rif
  49.  
  50. ArrayList params = new ArrayList(2);
  51. params.add(new BasicNameValuePair("username", "warrior4000")); // mi username // Prueben cambiando algo aca y ejecuten el codigo.
  52. params.add(new BasicNameValuePair("password", "wMJHq4A")); // mi password
  53. httppost.setEntity(new UrlEncodedFormEntity(params));
  54. response = httpclient.execute(httppost);
  55. System.out.println("Estado: " + response.getStatusLine());  
  56. entity = response.getEntity();
  57. if (entity != null) {
  58. // Ya deberíamos estar autentificados, ahora podríamos acceder a cualquier parte del sitio web
  59. // al que solo pueden acceder usuarios registrados
  60. // Podríamos liberar el cliente...
  61. entity.consumeContent();
  62. // y acceder por ejemplo a la página de preferencias del usuario
  63.  
  64. /// Y aca es donde comienza el problema del parseo... es decir lo que quiero obtener del codigo html.
  65. /// Leer el foro.
  66. /// Supongo de aqui en adelante deberia usar Json, lamentablemente no me he documentado completo sobre Json.
  67. HttpGet httpget2 = new HttpGet("http://www.spritmonitor.de/en/my_account.html");  // Aca ingresamos a my profile. por asi decirlo.
  68. response = httpclient.execute(httpget2);
  69. System.out.println("Estado " + response.getStatusLine());  
  70. entity = response.getEntity();          
  71. if (entity != null) {
  72.    // De aqui en adelante por favor leer mi pregunta en el foro.
  73.    // Yo no se trabajar con Json y muchos dicen que es util para parsear codigo html, por ello les pido su ayuda.
  74. InputStream instream = entity.getContent(); // Todo el codigo Html de la pagina.
  75. String result= convertStreamToString(instream); // Leer el metodo convertStream mas abajo.
  76. System.out.println("Datos: "+result); // Mandamos a imprimir en un sout. todo el codigo html
  77. instream.close();
  78. // Como hacer para obtener al menos el nombre y no todo el codigo html?, esa es una de mis necesidades -
  79. // en lo que respecta a lo del seniat.
  80. }
  81.  
  82. }
  83. }          // Disculpen las except... me da flojera hacer unos propios en ejemplos :(.
  84. } catch (ClientProtocolException e) {
  85. // TODO Auto-generated catch block
  86. e.printStackTrace();
  87. } catch (IOException e) {
  88. // TODO Auto-generated catch block
  89. e.printStackTrace();
  90. }
  91.  
  92.    }
  93.  
  94. public static String convertStreamToString(InputStream is) {
  95.      BufferedReader reader = new BufferedReader(new InputStreamReader(is));
  96.      StringBuilder sb = new StringBuilder();
  97.  
  98.      String line = null;
  99.      try {
  100.          while ((line = reader.readLine()) != null) {
  101.              sb.append(line + "\n");
  102.          }
  103.      } catch (IOException e) {
  104.          e.printStackTrace();
  105.      } finally {
  106.          try {
  107.              is.close();
  108.          } catch (IOException e) {
  109.              e.printStackTrace();
  110.          }
  111.      }
  112.      return sb.toString();
  113.  }
  114. }

METAS:
Por favor acepto cualquier ayuda, mi principal meta es enviar el rif a la web del seniat, conozco los parametros que este necesita.
Código
  1. // @param p_rif /* Este es el parametro que usan en la web del seniat y el que necesito enviar.


segundo* - Buscar un medio para capturar solo algo del cuerpo del html "Para obtener el nombre de la empresa en la web del seniat"... tengo pensado Json, cosa que aun no se utilizar.

tercero* - De aqui en adelante me encargo de todo lo demás, conectar a la bd, establecer parametros de busqued, ordenar los datos obtenidos, almacenarlos, etc... y ademas agradeceria mil veces al que me lograra ayudar con mis necesidades :)...
PD: agradezco al amigo legnak gracias por nombrarme el foro, :).


En línea

JNell

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Httpclient obtener datos de la web del Seniat
« Respuesta #1 en: 12 Marzo 2013, 02:43 am »

Jajaja Nvm... muchas gracias a aquellos "los que trataron de ayudarme en mi codigo" y los que no tambien por ver mi post  ::)

ya logre hacer justo lo que necesito al 200%.  ;-)

Solo me costo unas 32 hrs mas o menos de sueño con  :silbar:  ::)

PD: no use Json debido a que la misma pagina me generaba algunos errores
asi que utilize Jsoup... parseador html bastante completo y con javadoc integrado... los invito a probarlo no es complejo.  :rolleyes:

De esta forma no es por nada pero... les mando a decir a todos que no es imposible obtener datos del seniat sin tener la BD... "El que persevera, alcanza".

Suerte   ;)


En línea

neomatrix14

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Httpclient obtener datos de la web del Seniat
« Respuesta #2 en: 13 Marzo 2014, 20:44 pm »

Hola, hermano estoy haciendo algo así para un cliente, y lo que veo es que usas una técnica de web scraping, pero en el caso de sitios web que para darte el resultado usan capcha. como veo es el caso del seniat, ¿como haces? yo lo quiero hacer usando java script o jquery. Saludos
En línea

Páginas: [1] 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,852 Último mensaje 24 Marzo 2006, 05:47 am
por aNexos
Obtener datos de Internet
Programación Visual Basic
The Keeper 3 1,473 Último mensaje 2 Octubre 2006, 07:04 am
por <--v1c1ous-->
obtener datos de red
Programación Visual Basic
nahuelveronesi 2 2,805 Último mensaje 13 Octubre 2009, 19:37 pm
por BlackZeroX
obtener datos de una web
Hacking
jadsera 4 3,888 Último mensaje 14 Enero 2012, 18:21 pm
por H1tchclock
Subiendo archivos con HttpClient « 1 2 »
Java
Proteus1989 12 7,001 Último mensaje 3 Marzo 2012, 17:39 pm
por Proteus1989
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines