¿Cómo obtener el html-fuente de una página de un enlace html en android?

Estoy trabajando en una aplicación que necesita para obtener el origen de una página web de un enlace, y luego analizar el html de esa página.

¿Podría darme algunos ejemplos, o puntos de partida donde buscar para empezar a escribir una aplicación tan?

6 Solutions collect form web for “¿Cómo obtener el html-fuente de una página de un enlace html en android?”

Puede utilizar HttpClient para realizar un HTTP GET y recuperar la respuesta HTML, algo así:

HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); HttpResponse response = client.execute(request); String html = ""; InputStream in = response.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder str = new StringBuilder(); String line = null; while((line = reader.readLine()) != null) { str.append(line); } in.close(); html = str.toString(); 

Yo sugeriría jsoup .

Según su sitio web:

Busca la página principal de Wikipedia, analiza en un DOM y selecciona los titulares de la sección de noticias en una lista de elementos (muestra en línea):

 Document doc = Jsoup.connect("http://en.wikipedia.org/").get(); Elements newsHeadlines = doc.select("#mp-itn ba"); 

Empezando:

  1. Descargue la biblioteca jsoup jar core
  2. Lea la introducción del libro de cocina
  3. ¡Disfrutar!

Diviértete, Paul

Esta pregunta es un poco antigua, pero me imaginé que debería publicar mi respuesta ahora que DefaultHttpClient , HttpGet , etc están obsoletos. Esta función debe obtener y devolver HTML, dado un URL.

 public static String getHtml(String url) throws IOException { // Build and set timeout values for the request. URLConnection connection = (new URL(url)).openConnection(); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); connection.connect(); // Read and store the result line by line then return the entire string. InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder html = new StringBuilder(); for (String line; (line = reader.readLine()) != null; ) { html.append(line); } in.close(); return html.toString(); } 
 public class RetrieveSiteData extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) { StringBuilder builder = new StringBuilder(100000); for (String url : urls) { DefaultHttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); try { HttpResponse execute = client.execute(httpGet); InputStream content = execute.getEntity().getContent(); BufferedReader buffer = new BufferedReader(new InputStreamReader(content)); String s = ""; while ((s = buffer.readLine()) != null) { builder.append(s); } } catch (Exception e) { e.printStackTrace(); } } return builder.toString(); } @Override protected void onPostExecute(String result) { } } 

Si echas un vistazo aquí o aquí , verás que no puedes hacerlo directamente con la API de Android, necesitas una biblioteca externa …

Usted puede elegir entre el 2 aquí está arriba si usted necesita un librairy externo.

Llámelo como

 new RetrieveFeedTask(new OnTaskFinished() { @Override public void onFeedRetrieved(String feeds) { //do whatever you want to do with the feeds } }).execute("http://enterurlhere.com"); 

RetrieveFeedTask.class

 class RetrieveFeedTask extends AsyncTask<String, Void, String> { String HTML_response= ""; OnTaskFinished onOurTaskFinished; public RetrieveFeedTask(OnTaskFinished onTaskFinished) { onOurTaskFinished = onTaskFinished; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... urls) { try { URL url = new URL(urls[0]); // enter your url here which to download URLConnection conn = url.openConnection(); // open the stream and put it into BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; while ((inputLine = br.readLine()) != null) { // System.out.println(inputLine); HTML_response += inputLine; } br.close(); System.out.println("Done"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return HTML_response; } @Override protected void onPostExecute(String feed) { onOurTaskFinished.onFeedRetrieved(feed); } } 

OnTaskFinished.java

 public interface OnTaskFinished { public void onFeedRetrieved(String feeds); } 
  • Subida de archivo de WebView Android 4.0
  • Extra padding en TextView con contenido HTML
  • ¿Cómo obtener contenido html de XWalkView?
  • El navegador de Android muestra las fronteras erróneas cuando hay un radio de borde más pequeño que el ancho total del borde
  • TextView con color de fondo y espaciado entre líneas
  • ¿Cómo evitar hacer clic en el elemento html inferior al hacer clic en el elemento html encima de él en dispositivos táctiles?
  • Cargando el archivo html desde la carpeta local en la vista web
  • ¿Puede una aplicación IOS / Android Phonegap hacer nada pero enlazar a un sitio web?
  • Elementos relativamente posicionado en desplazable absolutamente posicionado div "retraso" en el desplazamiento
  • Comparación entre Corona, Phonegap, Titanium
  • Android carga los datos html en las pestañas personalizadas de cromo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.