Buenas, para escribir en los foros deben seguirse las indicaciones que se dan en
https://aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se explica cómo poner título a los temas, cómo pegar código, etc.
Si no se tienen las bases de Java fundamentales recomendamos seguir el curso Java desde cero:
https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188En el código indicado lo que se usa es una expresión regular para buscar un patrón dentro de una cadena de texto (en este caso dentro del código html de una página web). Para interpretar la expresión regular tenemos que:
String pattern = "<" + tag + ".*\\/?>";
La cadena comienza por "<" seguida del tag indicado. En este caso debemos poner simplemente p o simplemente h2 (según lo que queramos buscar), porque si pones String tag ="<p>" estarías repitiendo dando lugar a que se buscara <<p> lo cual no es correcto.
Por tanto pondríamos String tag = "p"; ó String tag = "h2"; por ejemplo.
Luego el . indica "cualquier carácter". El * es un metacarácter que se usa para indicar que el carácter anterior ocurre cero o una o más de una vez. Es decir, cualquier número de veces. Por tanto tenemos ya <h2> Cualquier cantidad de caracteres
\\ es la cadena de escape o backslah en las expresiones regulares de Java.
? indica ocurrencia ninguna o una vez. Es decir, que podría existir el carácter / ninguna o una vez.
Hay mucha información sobre expresiones regulares en Java en internet.
Haciendo esta pequeña modificación del código:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class getTag2Html {
public static void main (String[] args) throws IOException {
String tag = "h2";
URL web = new URL("http://www.insalfonscostafreda.cat/web/");
//comprobar que hi hagi dos paràmetres a l'entrada
System.out.println("Buscando en : "+web + " la etiqueta h2");
// patró de cerca regexp
String pattern = "<" + tag + ".*\\/?>";
//Iniciem la connexió
web.openConnection();
BufferedReader in = new BufferedReader( new InputStreamReader(web.openStream()));
File f = new File("prueba_apr_eac2.xml");
BufferedWriter bw;
bw = new BufferedWriter(new FileWriter(f));
String inputLine;
while ((inputLine = in.readLine()) != null) {
if(inputLine.contains(tag)) {
System.out.println(inputLine);
bw.write(inputLine + "\n");
}
}
bw.close();
in.close();
}
}
He obtenido este resultado:
Buscando en : http://www.insalfonscostafreda.cat/web/ la etiqueta h2
h1, h2, h3, h4, h5, h6, .site-title {
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
<h2 class="item-title" itemprop="headline">
</h2>
Además como en el código está definido que se cree un archivo xml donde se guarden estos resultados, se ha creado dicho archivo.
Salu2