Leer paginas web desde Java
En alguna ocasión he necesitado poder descargarme el contenido de una pagina web y poder recuperar de ella
ciertos valores. ¿Cómo hace esto?. Existen infinidad de formas: desde consola con bash y utilizando varios comandos
podria hacerse facilmente, pero hoy he decidido contaroslo desde un programa Java.
A continuación os presento la clase ApiWeb con la que podras leer páginas web, tanto por el método GET, como
por el método POST:
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.net.URLDecoder; import java.net.URLEncoder; public class ApiWeb { /** * Constructor de la clase ApiWeb sin parámetros */ public ApiWeb() { } /** * Método para leer páginas web por el método GET * @param loc String url de la página web a leer * @throws IOException * @return String Devuelve el contenido de la página web indicada por loc */ public String get(String loc) throws IOException { URL url = new URL(loc); URLConnection conexion = url.openConnection(); conexion.setRequestProperty ("User-agent", "deckerix agent"); conexion.setRequestProperty ("From", "deckerix@gmail.com"); BufferedReader in = new BufferedReader(new InputStreamReader(conexion.getInputStream())); String linea, pagina = ""; while ( (linea = in.readLine()) != null) { pagina += linea + "\n"; } return pagina; } /** * Método que permite la lectura de la página web dada como parámetro a través del método POST * @param loc String página web a leer * @param query String query que se le puede pasar a la pagina web * @throws IOException * @return String la página leída */ public String post(String loc, String query) throws IOException { URL url = new URL(loc); URLConnection conexion = url.openConnection(); conexion.setRequestProperty ("User-agent", "deckerix agent"); conexion.setRequestProperty ("From", "deckerix@gmail.com"); conexion.setDoOutput(true); DataOutputStream out = new DataOutputStream (conexion.getOutputStream()); out.writeBytes(query); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(conexion.getInputStream())); String linea, pagina = ""; while ( (linea = in.readLine()) != null) { pagina += linea + "\n"; } return pagina; } }
Un ejemplo del uso de esta clase sería el siguiente:
String url = "http://google.es"; String pagina = ""; ApiWeb miApiWeb = new ApiWeb(); try { pagina = miApiWeb.get(url); System.out.println(pagina); } catch (Exception ex) { ex.printStackTrace(); }