You are on page 1of 23

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

II SEMESTRE
2008
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
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
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
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
Clase URL 6 Concepción, Jairo
– Montes, Diomedes
DIAGRAMA UML DE CLASES

Class Url
Objetos Clases

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

Main()

Class LeeWeb Class ObtenerDatos Class DespliegaArch


String inputText; String Url;
BufferedReader pag; String Id;
String OpenUrl; No tiene String Parrafo;
Int cant; Parrafo Eti;

BufferedReader leeURL() Void GetParrafo(String eti)


String ObtieneURL() Void AñadirParrafo(String PrinterArch()
Void EscribirUrl() Id,String parrafo,int cantpar) PrinterArch(String inputText)
Int Getcant() GetId()
GetParrafo()
GetEtiqueta()
ESTRUCTURA DEL PROGRAMA (UML) CON LA RESPECTIVA DOCUMENTACIÓN
DE LAS CLASES

Class Url:

Class Url
Objetos Descripción - Funcionamiento
Nombre Clases
Objeto de la clase DespliegaArch() que se
Captura DespliegaArch() encarga de capturar los datos que se van a
utilizar en el programa
Objeto de la clase ObtenerDatos() que se
ObtenerAcceso ObtenerDatos() encarga de Añadir y extraer el contenido del
archivo.
Objeto de la clase LeeWeb() que se encarga de
acceso LeeWeb()
lee un archivo URL y lo escribe en otro archivo.

Métodos Descripción - Funcionamiento


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

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 LeeWeb
Variables de la Clase Descripción - Funcionamiento
Nombre Tipo
inputText String
Almacena los datos que se leyeron en el archivo
pag BufferedReader
OpenUrl String Almacena la dirección del Url que se desea leer
Cuenta y almacena la cantidad de párrafos que
cant int
existen en el archivo leído.

Métodos Descripción - Funcionamiento


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

Método publico que realiza la lectura del documento


ObtieneURL() String
URL para luego devolver todos los datos leidos.

Método publico que se encarga de realizar la


EscribirUrl() void escritura en un nuevo archivo, los datos obtenidos
en el url
Método publico que se encarga de contar la
Getcant() Int
cantidad de párrafos que contiene el Url.

Código Fuente de la clase


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

Clase URL 9 Concepción, Jairo


– Montes, Diomedes
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

Class ObtenerDatos:
Clase URL 10 Concepción, Jairo
– Montes, Diomedes
Class ObtenerDatos
Variables de la Clase Descripción - Funcionamiento
Nombre Tipo

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

Métodos Descripción - Funcionamiento

Método publico que se encarga de obtener el


contenido de cualquiera etiqueta html, utiliza como
GetParrafo(String eti) void
argumento la variable eti que contiene la etiqueta
que se desea obtener el contenido.

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
AñadirParrafo(String
Id,String parrafo,int cantpar) void 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 11 Concepción, Jairo


– Montes, Diomedes
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 12 Concepción, Jairo


– Montes, Diomedes
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 DespliegaArch
Variables 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


Método publico que se encarga de capturar la
PrinterArch() String
dirección Url.
Método publico que se encarga de desplegar en
PrinterArch(String inputText) void
consola el Url.

Método publico que se encarga de obtener el id del


GetId() String
parrafo.

Método publico que se encarga de capturar el


GetParrafo() String
párrafo que se desea añadir al archivo.

Método publico que se encarga de capturar la


GetEtiqueta() String
etiqueta a la cual se desea obtener el contenido.

Código Fuente de la clase


Clase URL 13 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

SIMILITUDES DE LOS FLUJOS


Clase URL 14 Concepción, Jairo
– Montes, Diomedes
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 15 Concepción, Jairo


– Montes, Diomedes
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 16 Concepción, Jairo


– Montes, Diomedes
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 17 Concepción, Jairo


– Montes, Diomedes
En esta pantalla mostramos el archivo html guardado.

Clase URL 18 Concepción, Jairo


– Montes, Diomedes
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 19 Concepción, Jairo


– Montes, Diomedes
...

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 20 Concepción, Jairo
– Montes, Diomedes
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 21 Concepción, Jairo


– Montes, Diomedes
En esta pantalla mostramos el archivo de texto guardado:

Clase URL 22 Concepción, Jairo


– Montes, Diomedes
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 23 Concepción, Jairo


– Montes, Diomedes

You might also like