Foros aprenderaprogramar.com
		Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: oscarcuenca2 en 28 de Septiembre 2015, 15:05
		
			
			- 
				Hola 
 
 Estoy buscando información de como capturar la información que suministra un URL  y guardarla en formato TXT para luego poder analizar el dicho texto. Por ejemplo ver cuantas veces aparece una letra, contar el número de palabras, etc...
 
 No quiero capturar el código fuente de la URL sino el resultado que puede mostrar dicha URL. (sin tener que abrir el URL  en una pantalla).
 
 Agradecería si alguien tiene idiea de si existe alguna API relacionada con este tema, o si me puede arientar un poco de como enfocarlo. El objetivo es analizar los resultados que aparecen de una web tras llamar a un URL.
 
 Muchas gracias por anticipado
 
 Un saludo
- 
				Yo hice algo parecido era te voy a enviar si por ahí te sirve en java es yo hice para filtrar una cotización de moneda pero vos le cambia nomas la condición y filtra lo que quiera de una pagina web.
 
 package testurl;
 
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 public class Testurl {
 
 public static void main(String[] args) {
 try {
 //se abre la conexiòn
 URL url = new URL("http://www.cambioschaco.com.py/php/chaco_cotizaciones_nuevo.php");
 URLConnection conexion = url.openConnection();
 conexion.connect();
 
 //Lectura
 InputStream is = conexion.getInputStream();
 BufferedReader br = new BufferedReader(new InputStreamReader(is));
 char[] buffer = new char[1000];
 //ACA EMPIEZA MI CONDICIÓN DESDE ACÁ PODES CAMBIAR VOS
 int leido;
 String texto = "";
 while ((leido = br.read(buffer)) > 0) {
 String datos = new String(buffer, 0, leido);
 texto += datos;
 }
 String[] tr = texto.split("<tr");
 String fila = "";
 for (String linea : tr) {
 if (linea.contains("Dolar Americano")) {
 fila = linea;
 }
 }
 String[] td = fila.split("<td");
 String columna = "";
 for (String linea : td) {
 if (linea.contains(",00")) {
 System.out.println("---> " + linea);
 int pos1 = 0;
 int pos2 = 0;
 String cotizacion = "";
 for (int i = 0; i < linea.length(); i++) {
 if (linea.substring(i, i + 1).equals(">")) {
 pos1 = i;
 } else if (linea.substring(i, i + 1).equals("<")) {
 pos2 = i;
 break;
 }
 }
 System.out.println("---> " + linea.substring(pos1 + 1, pos2));
 }
 }
 //FIN DE LA CONDICION
 
 } catch (MalformedURLException ex) {
 Logger.getLogger(Testurl.class.getName()).log(Level.SEVERE, null, ex);
 } catch (IOException ex) {
 Logger.getLogger(Testurl.class.getName()).log(Level.SEVERE, null, ex);
 }
 }
 
 }
 En el URL le pasa el url de la pagina web que quere filtrar.
 ojala que te sirva
 
- 
				Hola Oscar aquí te dejo una referencia válida para PHP
 
 Extraer código fuente de página web con PHP. Leer archivos completos: file_get_contents y nl2br (CU00838B)
 
 http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=604:extraer-codigo-fuente-de-pagina-web-con-php-leer-archivos-completos-filegetcontents-y-nl2br-cu00838b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193
 
 Saludos
 
- 
				Muchas Gracias por la Ayuda-  ;) Os cuento cuando lo tenga como ha quedado el proyecto.
 
 Un saludo.
 óscar
- 
				Hola, ya lo tengo. 
 
 A continuación dejo aquí el código.
 
 Dentro de él hay una instrucción que no entiendo muy bien. Si alguien me la puede explicar se lo agradeceré-
 
 Instrucción que no entiendo.
 
 fichero.write(new String(buffer, 0, leido));
 
 
 Código del programa
 
 import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
 
 public class capturas{
 
 public static void main(String[] args) throws IOException{
 
 FileWriter fichero=null;
 try {
 fichero = new FileWriter("C:/Users/Propietario/Desktop/prueba.txt");
 
 
 
 // Se abre la conexión
 URL url = new URL("http://www.miwebdeejemplo.com");
 URLConnection conexion = url.openConnection();
 conexion.connect();
 
 // Lectura
 InputStream is = conexion.getInputStream();
 BufferedReader br = new BufferedReader(new InputStreamReader(is));
 
 char[] buffer = new char[1000];
 int leido;
 while ((leido = br.read(buffer)) > 0)
 
 //creamos un string explícitamente escribimos
 {
 fichero.write(new String(buffer, 0, leido));
 
 
 }
 
 } catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 finally {
 if (null!=fichero) fichero.close();
 }
 }
 }
- 
				Hola Oscar gracias por pegar el código (por cierto para otra ocasión lee este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica cómo se debe insertar el código en los foros)
 
 La instrucción a que haces referencia
 
 fichero.write(new String(buffer, 0, leido));
 
 
 Tienes por un lado lo que está dentro del paréntesis: new String(buffer, 0, leido)
 
 Esto es un constructor definido en la clase String del api de java: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
 
 String(char[] value, int offset, int count)
 Allocates a new String that contains characters from a subarray of the character array argument. The offset argument is the index of the first character of the subarray and the count argument specifies the length of the subarray. The contents of the subarray are copied; subsequent modification of the character array does not affect the newly created string.
 
 Esto lo que está haciendo es básicamente lo siguiente:
 
 Extrae 1000 caracteres de la página web, o un número inferior si no quedan 1000 caracteres: leido = br.read(buffer)
 
 Cuando ha llegado a extraer todo el contenido ya no hay caracteres y leido=0 con lo cual termina la extracción
 
 Cada paquete de 1000 caracteres lo va escribiendo en el archivo a través de la instrucción fichero.write(new String(buffer, 0, leido));
 
 Para comprender todos los conceptos te recomiendo seguir paso a paso este curso: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188
 
 Saludos