Saltar al contenido

Buscar en el código de una página web con java

En este programa hecho en jsp, le pasamos una URL cualquiera y nos buscará en el código de la página web la cadena que hayamos puesto como predeterminada, en este caso hemos puesto que busque en el código la cadena «h1» (Qué en HTML se emplea para el formato de las títulos).

Para esto utilizamos un formulario en el que escribiremos la url y nos devolverá si ha encontrado o no la cadena en el código.

Utilizamos la clase URLConnection a la cual le pasamos una instancia de un objeto URL,

Este es el código de la página que devolverá si ha encontrado la cadena:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
 
 <%@ page import="java.net.URLConnection" %>
 <%@ page import="java.net.URL" %>
 <%@ page import="java.io.*"%>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Leer código de pagina web</title>
</head>
<body>
 
<%
String text=""; 
String h1Mostrar="";
 
try {
    String nombreurl = request.getParameter("url");
    URL url = new URL(nombreurl);    
    URLConnection uc = url.openConnection();
    uc.connect();
 
    BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
 
    StringBuilder builder = new StringBuilder();
    String aux = "";
 
    while ((aux = in.readLine()) != null) {
        builder.append(aux);
    }
    text = builder.toString();    
    StringBuffer sText = new StringBuffer(text);
 
    int h1Cuantos=0;
    int h1Donde=1;
 
		while (sText.indexOf("h1")!=-1 || h1Cuantos<2){
		    h1Donde=sText.indexOf("h1");
		    sText = new StringBuffer (sText.substring(h1Donde+1));
		    h1Cuantos++;
	    }
 
     	switch (h1Cuantos)	{
	   case 0:
	     h1Mostrar="Incorrecto: No existen elementos h1";			
	   break;
	   case 1:
	     h1Mostrar="Correcto: Existe un elemento h1";
	   break;
	   default:
	     h1Mostrar="Incorrecto: Existen más de un elemento h1";
	   break;
	}	
}
catch (Exception ex){
    ex.printStackTrace();
    System.out.println("ERROR: "+ex.getMessage());
} 
//System.out.println(text);
%>
<%=h1Mostrar %><br>
</body>
</html>

Este es el código del formulario en el que escribiremos la url:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 
 <FORM action="devolucion.jsp" method="get">
    <P>
    <LABEL for="nombre">URL: </LABEL>
              <INPUT type="text" id="url" name="url"><BR>
    <INPUT type="submit" value="Enviar"> <INPUT type="reset">
    </P>
 </FORM>
</body>
</html>