CLASE URL

27
UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL UNIVERSITARIO DE VERAGUAS FACULTAD INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓN LIC. EN INFORMÁTICA PARA LA GESTIÓN EDUCATIVA Y EMPRESARIAL PROGRAMACIÓN IV INF222 LABORATORIO #6 “Clase URL” FACILITADOR DIEGO SANTIMATEO INTEGRANTES CONCEPCION, JAIRO 9-724-1589 MONTES, DIOMEDES 9-723-640

Transcript of CLASE URL

Page 1: CLASE URL

UNIVERSIDAD DE PANAMÁCENTRO REGIONAL UNIVERSITARIO DE VERAGUAS

FACULTAD INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓNLIC. EN INFORMÁTICA PARA LA GESTIÓN EDUCATIVA Y

EMPRESARIAL

PROGRAMACIÓN IV INF222

LABORATORIO #6

“Clase URL”

FACILITADOR

DIEGO SANTIMATEO

INTEGRANTES

CONCEPCION, JAIRO 9-724-1589

MONTES, DIOMEDES 9-723-640

II SEMESTRE2008

Page 2: CLASE URL

INDICE

Contenidos Pág.

Introducción..................................................................................................... 3

Objetivos......................................................................................................... 4

Descripción del Problema............................................................................... 5

Diagrama UML de Clases.............................................................................. 6

Estructura del programa (Uml) con la respectiva documentación de las Clases y métodos............................................................................................

7

Class Url: ................................................................... ........................... 7

Código Fuente................................................................................ 7

Class LeeWeb........................................................................................ 8

Código Fuente................................................................................ 8,9

Class ObtenerDatos.............................................................................. 10

Código Fuente................................................................................ 10,11,12

Class DespliegaArch............................................................................. 12

Código Fuente................................................................................ 13

Similitudes de los flujos.................................................................................. 14

Utilidad práctica de la clase URL.................................................................... 15

Resultados de la Ejecución de la Aplicación, Modo Gráfico para I/O............. 16-20

Experiencias individuales del laboratorio........................................................ 21

Clase URL 2 Concepción, Jairo – Montes, Diomedes

Page 3: CLASE URL

INTRODUCCION

La clase URL contiene contructores y métodos para la manipulación de URL

(Universal Resource Locator): un objeto o servicio en Internet.

Con el URL se identifica cualquier recurso accesible en la RED como por ejemplo;

una página web, un documento, una dirección de correo, imagen, vídeo, audio, texto,etc.

Normalmente una URL consta de:

Identificador del método de acceso.

Servidor que identifica la computadora que cuenta con el recurso

Nombre del recurso.

El formato general de un URL es: protocolo://servidor/directorio/archivo, dado

una dirección URL Podemos obtener datos desde de la RED, con un InputStream que modele

el comportamiento fundamental de un flujo de entrada.

Nuestra aplicación esta diseñada para leer un sitio Web y pasar su contenido

a un archivo de texto. De igual forma podemos añadir una etiqueta HTML al

sitio Web en cualquier parte del mismo sin afectar su contenido.

Con un explorador de Internet se puede visualizar el contenido del

archivo creado además del documento añadido.

Clase URL 3 Concepción, Jairo – Montes, Diomedes

Page 4: CLASE URL

OBJETIVOS

Identificar similitudes en el manejo de FLUJOS para captura desde teclado,

lectura de archivo de texto, lectura de un recurso de la web, despliegue en

consola.

Crear una aplicación Java que lea un documento HTML de la web, lo

despliegue en consola y lo grabe en un archivo de texto.

Clase URL 4 Concepción, Jairo – Montes, Diomedes

Page 5: CLASE URL

DESCRIPCIÓN DEL PROBLEMA

Este laboratorio se puede realizar en grupos de dos personas y trata de lo

siguiente:

Identificar similitudes en el manejo de FLUJOS para captura desde teclado,

lectura de archivo de texto, lectura de un recurso de la web, despliegue en

consola.

Crear una aplicación Java que lea un documento HTML de la web, lo

despliegue en consola de manera legible y lo grabe en un archivo de texto.

Mediante una clase nueva adicione al archivo de texto un párrafo HTML

(use las etiquetas adecuadas) creado por usted.

En esa clase nueva adicione un método que permita extraer el contenido

de una etiqueta y crear un archivo de texto con ese contenido. Revise si el

archivo se crea correctamente.

Con un explorador de Internet despliegue el contenido del archivo que

usted creó.

Clase URL 5 Concepción, Jairo – Montes, Diomedes

Page 6: CLASE URL

DIAGRAMA UML DE CLASES

Class Url

Objetos Clases

Acceso LeeWeb()ObtenerAcceso ObtenerDatos()Captura DespliegaArch()

Main()

Class LeeWeb

String inputText;BufferedReader pag;String OpenUrl;Int cant;

BufferedReader leeURL()String ObtieneURL()Void EscribirUrl()Int Getcant()

Class ObtenerDatos

No tiene

Void GetParrafo(String eti)Void AñadirParrafo(String Id,String parrafo,int cantpar)

Class DespliegaArch

String Url;String Id;String Parrafo;Parrafo Eti;

PrinterArch() PrinterArch(String inputText) GetId() GetParrafo() GetEtiqueta()

Page 7: CLASE URL

ESTRUCTURA DEL PROGRAMA (UML) CON LA RESPECTIVA DOCUMENTACIÓN DE LAS CLASES

Class Url:

Código Fuente de la clase

import java.io.*;import java.net.*;import javax.swing.*;import java.lang.*;

class Url {

public static void main(String args[]) throws IOException {

DespliegaArch Captura = new DespliegaArch();

ObtenerDatos ObtenerAcceso = new ObtenerDatos();

LeeWeb acceso = new LeeWeb(Captura.PrinterArch());

System.out.println("**** Leyendo archivo de la web ...espere por favor ....");

Captura.PrinterArch(acceso.ObtieneURL());

acceso.EscribirUrl();

ObtenerAcceso.AñadirParrafo(Captura.GetId(), Captura.GetParrafo(),acceso.Getcant());

ObtenerAcceso.GetParrafo(Captura.GetEtiqueta());

}

} // fin del main

Class LeeWeb:

Class UrlObjetos Descripción - Funcionamiento

Nombre Clases

Captura DespliegaArch()Objeto de la clase DespliegaArch() que se encarga de capturar los datos que se van a utilizar en el programa

ObtenerAcceso ObtenerDatos()Objeto de la clase ObtenerDatos() que se encarga de Añadir y extraer el contenido del archivo.

acceso LeeWeb()Objeto de la clase LeeWeb() que se encarga de lee un archivo URL y lo escribe en otro archivo.

Métodos Descripción - Funcionamiento

Main() voidSe encarga de la ejecución del programa, llama a los métodos de las demás clases.

Page 8: CLASE URL

Class LeeWebVariables de la Clase Descripción - Funcionamiento

Nombre Tipo

inputText StringAlmacena los datos que se leyeron en el archivo

pag BufferedReader

OpenUrl String Almacena la dirección del Url que se desea leer

cant intCuenta y almacena la cantidad de párrafos que existen en el archivo leído.

Métodos Descripción - Funcionamiento

LeeURL() BufferedReaderMétodo privado que se conecta y usa un URL para obtener el recurso correspondiente.

ObtieneURL() StringMétodo publico que realiza la lectura del documento URL para luego devolver todos los datos leidos.

EscribirUrl() voidMétodo publico que se encarga de realizar la escritura en un nuevo archivo, los datos obtenidos en el url

Getcant() Int Método publico que se encarga de contar la cantidad de párrafos que contiene el Url.

Código Fuente de la clase

Clase URL 8 Concepción, Jairo – Montes, Diomedes

import java.io.*;import java.net.*;import java.lang.*;class LeeWeb {

private String inputText ="";private BufferedReader pag;private String OpenUrl;private BufferedReader web;private int cant;

public LeeWeb(String Url) { this.OpenUrl = Url; } //constructor LeeWeb

private BufferedReader LeeURL() throws IOException{

URL recurso = new URL(OpenUrl); URLConnection recursoWeb = recurso.openConnection(); InputStream is = recursoWeb.getInputStream(); InputStreamReader isr = new InputStreamReader(is);

this.pag = new BufferedReader(isr); return(this.pag);

}//fin del metodo LeeURL

public String ObtieneURL() throws IOException {

LeeURL(); String inputLine=""; System.out.flush(); // obliga al despliegue inmediato

try { while ((inputLine = pag.readLine()) != null){

inputText += inputLine + "\n";

if(inputLine.indexOf("<P>")!=-1){ cant++; } }

pag.close();

}catch (MalformedURLException me) { System.out.println("MalformedURLException: " + me); } catch (IOException ioe) { System.out.println("IOException: " + ioe); }

return(this.inputText);

} // fin del metodo LeeURL

public int Getcant(){ return(this.cant); }

} // fin de LeeWeb

public void EscribirUrl() throws IOException {

try{ String s;

BufferedReader leer = new BufferedReader(new StringReader(ObtieneURL())); PrintWriter escribir = new PrintWriter(new BufferedWriter(new FileWriter("Prueba.html")));

while ((s = leer.readLine()) != null){ escribir.println(s);

} leer.close(); escribir.close();

} catch (IOException ioe) { System.out.println("Final de la lectura"); }

}//fin de metodo EscribirUrl

Page 9: CLASE URL

Class ObtenerDatos:

Class ObtenerDatosVariables de la Clase Descripción - Funcionamiento

Nombre Tipo

------------- ------------ ------------------------------------------------

Métodos Descripción - Funcionamiento

GetParrafo(String eti) void

Método publico que se encarga de obtener el contenido de cualquiera etiqueta html, utiliza como argumento la variable eti que contiene la etiqueta que se desea obtener el contenido.

AñadirParrafo(String Id,String parrafo,int cantpar) void

Método publico que se encarga de añadir un párrafo en el archivo con su respectivo Id,Que utiliza como argumento la variable id que contiene el identificador del párrafo, la variable parrafo que contiene el parrafo que se desea añadir y la variable cantpar que contiene el numero donde se desea añadir el párrafo

Código Fuente de la clase

import java.io.*;import java.net.*;import javax.swing.*;

class ObtenerDatos {

public ObtenerDatos() {

} //constructor LeeWeb

Clase URL 9 Concepción, Jairo – Montes, Diomedes

Page 10: CLASE URL

public void GetParrafo(String eti)throws IOException{

String s; int sw=1; try{

FileReader arch1 = new FileReader("DatosUrl.html");BufferedReader leer = new BufferedReader(arch1);

PrintWriter escribir = new PrintWriter(new BufferedWriter(new FileWriter("Extraccion.txt")));

while ((s = leer.readLine()) != null){ if(s.indexOf("<"+eti+">")!=-1){ if(s.indexOf("</"+eti+">")!=-1){ escribir.println(s); } else{ sw=0; } } if(sw==0){ escribir.println(s); if(s.indexOf("</"+eti+">")!=-1){ sw=1; } }

} leer.close();

escribir.close();

} catch (Exception e) { e.printStackTrace(); }

}//fin del metodo LeeURL

public void AñadirParrafo(String Id,String parrafo,int cantpar) throws IOException {

int cant=0; String s; String nuPar = JOptionPane.showInputDialog(null,"La cantidad de parrafo que contiene el archivo es de "+cantpar+"\n En que numero de parrafo desea incluir "); int numPar=Integer.parseInt(nuPar); try{

FileReader arch1 = new FileReader("Prueba.html"); BufferedReader in = new BufferedReader(arch1);

File salida = new File("DatosUrl.html"); //archivo de salida PrintWriter ar = new PrintWriter(salida);

while ((s = in.readLine()) != null){ if(cantpar>0){ if(s.indexOf("<P>")!=-1){ cant++; if(cant==numPar){ ar.println("<P id ="+Id+">"+parrafo+"</P>");

} } }else { ar.println("<P id ="+Id+">"+parrafo+"</P>"); } ar.println(s); }

in.close(); File fichero = new File("DatosUrl.html"); fichero.delete();

Clase URL 10 Concepción, Jairo – Montes, Diomedes

Page 11: CLASE URL

ar.close();

File f1 = new File("DatosUrl.html"); File f2 = new File("Prueba.html"); f1.renameTo(f2);

} catch (Exception e) { e.printStackTrace(); } } // fin del metodo AñadirParrafo

} // fin de LeeWeb

Class DespliegaArch:

Class DespliegaArchVariables de la Clase Descripción - Funcionamiento

Nombre Tipo

Url String Almacena la dirección del Url.

Id String Almacena el id del parrafo

Parrafo String Almacena el parrafo que se desea añadir

Eti String Almacena la etiqueta que se desea obtener

Métodos Descripción - Funcionamiento

PrinterArch() StringMétodo publico que se encarga de capturar la dirección Url.

PrinterArch(String inputText) void

Método publico que se encarga de desplegar en consola el Url.

GetId() StringMétodo publico que se encarga de obtener el id del parrafo.

GetParrafo() StringMétodo publico que se encarga de capturar el párrafo que se desea añadir al archivo.

GetEtiqueta() StringMétodo publico que se encarga de capturar la etiqueta a la cual se desea obtener el contenido.

Código Fuente de la claseClase URL 11 Concepción, Jairo – Montes, Diomedes

Page 12: CLASE URL

SIMILITUDES DE LOS FLUJOS

En el manejo de FLUJOS en Java existen diversas similitudes las cuales

desglosaremos a continuación:

En los flujos para la lectura de un recurso de la Web existe una clase de nombre

InputStreamReader, la cual tiene similitudes con los flujos para captura desde el

teclado. De igual forma la clase BufferedReader aparece en los flujos para la lectura de

una Web, la lectura de un archivo y para el despliegue en consola, existiendo en estos

flujos similitudes entre ellos.

En la mayoría de los casos de flujos se observa la clase BufferedReader a

excepción de la lectura desde el teclado y en los flujos para pasar datos a un archivo de

texto, en donde se utiliza la clase BufferedWriter u otras las cuales son para escribir en

un archivo.

Consideramos que los flujos FileReader y FileWriter también son similares, con

la diferencia que uno es para leer y el otro para escribir.

Clase URL 12 Concepción, Jairo – Montes, Diomedes

import java.io.*;import java.net.*;import javax.swing.*;class DespliegaArch {

private String Url; private String Id; private String Parrafo; private String Eti;

public DespliegaArch() {} //constructor DespliegaArch

public String PrinterArch() { Url = "http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/II_5.htm"; return(this.Url); }

public void PrinterArch(String inputText) {

System.out.println(inputText); //despliegue del documento HTML en consola System.out.println("\n**** Fin de la lectura de la web"); }

public String GetId() { Id = JOptionPane.showInputDialog(null," Introduzca el Id del parrafo "); return(this.Id); }

public String GetParrafo() { Parrafo = JOptionPane.showInputDialog(null,"Introduzca el parrafo"); return(this.Parrafo); }

public String GetEtiqueta() { Eti = JOptionPane.showInputDialog(null,"Introduzca la etiqueta que desea extraer el contenido"); return(this.Eti); }

} // fin de DespliegaArch

Page 13: CLASE URL

UTILIDAD PRÁCTICA DE LA CLASE URL

Mediante la clase URL se puede identificar cualquier recurso accesible

en la RED como por ejemplo: una página web, una dirección de correo, etc.

Un ejemplo práctico es el que aplicamos en nuestro trabajo, en donde

leemos un sitio web y pasamos su contenido a un archivo de texto. De igual

forma podemos añadir un documento HTML al sitio web en cualquier parte del

mismo sin afectar su contenido.

Clase URL 13 Concepción, Jairo – Montes, Diomedes

Page 14: CLASE URL

Con un explorador de Internet se puede visualizar el contenido del

archivo creado además del documento añadido. Esto sería una práctica muy

útil a utilizar la clase URL.

Resultados de la Ejecución de la Aplicación

En esta pantalla se muestra en consola un mensaje de espera, se aplica para indicar que la aplicación esta trabajando en la lectura del documento procedente de la Web.

En esta pantalla vemos desplegado en consola todo el contenido HTML del documento que hemos leído de la web, de igual manera este contenido lo grabamos en un archivo html. Para este caso especifico accesamos al documento "http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/II_5.htm";

Clase URL 14 Concepción, Jairo – Montes, Diomedes

Page 15: CLASE URL

En esta pantalla mostramos el archivo html guardado.

Clase URL 15 Concepción, Jairo – Montes, Diomedes

Page 16: CLASE URL

En el siguiente paso procedemos a adicionar al archivo de texto un párrafo HTML, para esto solicitaremos que ingrese el ID del párrafo como se muestra a continuación en la siguiente pantalla:

Después de introducir el ID, se procede a capturar el contenido del párrafo; como se muestra a continuación

En la siguiente pantalla le ofrecemos al usuario la posibilidad de ingresar el párrafo donde el desee, para esto le indicamos la cantidad total de parrafos que contiene el archivo, y le solicitamos que ingrese después de que numero desea ingresar esta etiqueta. Para este caso lo insertaremos después del tercer (3) parrafo.

En las siguientes pantallas mostramos la etiqueta HTML que hemos introducido en el documento. Les presentamos una vista de la etiqueta introducida a través del código fuente del archivo y desde el explorador de Windows.

Código fuente del archivo:

Clase URL 16 Concepción, Jairo – Montes, Diomedes

Page 17: CLASE URL

Desde el Explorador de Windows

En la siguiente pantalla extraeremos el contenido del una etiqueta HTML, para luego guardarlas en un archivo de texto.

El usuario puede extraer la etiqueta deseada, para este caso extraeremos las etiquetas de párrafos (<p>), como se muestra a continuación:

Clase URL 17 Concepción, Jairo – Montes, Diomedes

. . .

Page 18: CLASE URL

En esta pantalla desplegamos en consola el contenido de todas las etiquetas de párrafos, que se encuentran en el documento.

En esta pantalla mostramos el archivo de texto con el contenido de todas las etiquetas de párrafos, que se encuentran en el documento.

Clase URL 18 Concepción, Jairo – Montes, Diomedes

Page 19: CLASE URL

En esta pantalla mostramos el archivo de texto guardado:

Clase URL 19 Concepción, Jairo – Montes, Diomedes

Page 20: CLASE URL

EXPERIENCIAS INDIVIDUALES

Diomedes Montes J

Este Laboratorio es de mucha importancia para mi ya que al igual que en anteriores

he adquirido nuevos conocimientos que se me seran de utiles en el desarrollo del curso,.

En esta he aprendido la utilidad y el uso de un localizador Uniforme de Recursos

(URL) con el cual podemos acceder a los diversos recursos de Internet, también sobre el

objeto URLConnection es cual es el encargado de establecer la conexión con la PC, asi

mismo sobre la utilidad del método getInputStream que proporciona un flujo para leer el

contenido de entrada.

Jairo Concepción

Este laboratorio era parecido al laboratorio de archivo, donde la única diferencia

estaba en el flujo para obtener el Url, presente un poco de dificultades en el manejo de

las etiquetas que me permitirían añadir o extraer algo del archivo Url . Estos laboratorios

me están ayudando a aclarar muchas dudas que tenia antes y espero que estos

conocimientos me ayudes más adelante el lo profesional.

Clase URL 20 Concepción, Jairo – Montes, Diomedes