¿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); } 
  • Abrir aplicación de Android desde una página web
  • Cuadro de texto de entrada oculto detrás del teclado en android Chrome
  • Desactivar texto predictivo para el campo de contraseña en sitios web
  • WebView de Android se muestra en blanco / blanco, la vista no se actualiza en los cambios de css o cambios de HTML, las animaciones son intermitentes
  • Android deja de sugerir palabras
  • Hacer clic en cualquier botón más de una vez en el navegador de cruce de peatones no funciona
  • ¿Estableciendo el valor del cuadro de texto HTML usando la función javascript?
  • La imagen de fondo salta cuando la barra de direcciones oculta iOS / Android / Mobile Chrome
  • Color de estilo CSS ineficaz en estrellas (& # 9733;) en Samsung con Android 4.4 KitKat
  • Cómo cambiar el tamaño predeterminado de <h1> ... <h7> etiquetas en Android WebView?
  • Cadena multicolor (androide)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.