Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Obtener codigo de una web

Hola! estoy haciendo un proyecto de final de curso, y lo que quierp hacer es basicamente recopilar informacion de una pagina web, abstraer la informacion que me interesa para luego mostrarla, por ejemplo en Syste.out.printl...
He preguntado a un profesor de forma rapida y me ha dicho que se puede, y que con java es la manera mas facil que con C.

De ser asi, podriais dejarme un ejemplo sencillo de ello con una simple pagina web y un archvo .java?

pd: tengo conocimientos 'intermedios' de java.

muchas gracias comunidad!

marzo 11, 2015 | Unregistered CommenterJuan

http://docs.oracle.com/javase/tutorial/networking/urls/readingURL.html

marzo 11, 2015 | Registered Commenterchoces

no hay un un tema que este en español? llama a cosas raras..

marzo 11, 2015 | Unregistered CommenterJuan

¿Cosas raras?

marzo 12, 2015 | Registered Commenterchoces

si, por ejemplo, en que campo pongo el texto que deseo buscar?

marzo 12, 2015 | Unregistered CommenterJuan

Ese ejemplo del tutorial te permite capturar el contenido de un URL, no es la solución a la tarea que te han asignado.
Dices que tienes conocimientos "intermedios" de Java. ¿No puedes adaptar ese ejemplo a lo que necesitas?

marzo 12, 2015 | Registered Commenterchoces

Java te da la herramientas para hacerlo pero tu debes de se capaz de construirlo. Con eso que te da @choces te enseña a recupera la info de una web, y tienes que buscar más información para procesar toda esa información que recibes, ya sea leyéndola y guardandola en algún lado y después con filtros buscar sobre la información almacenada

marzo 12, 2015 | Registered Commenterantuansoft

Un ejemplo simple y completo, usando JavaSE 1.8

public class NewMain {

public static void main(String[] args) throws MalformedURLException, IOException {
URL oracle = new URL("http://www.oracle.com/");
try (BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream(), Charset.forName("UTF-8")))) {
boolean contains = in.lines().collect(Collectors.joining()).contains("oracle");
System.out.println(contains);
}

}

}

Comprueba si en el contenido de la URL existe el texto "oracle", en cuyo caso devuelve true por la consola.

marzo 12, 2015 | Registered Commenterchoces

hmm.. vale, estoy usando la funcion:

Pattern pattern = Pattern.compile("(?i)HREF\\s*=\\s*\"(.*?)\"");

pero me gustaria sacar de una larga cadena(no tiene que ser siempre href o un atributo del xhtml) algo asi:

blablablaSTRING UTILblablabla

en que blablabla podria haber caracteres como > o asi < (pero no tiene porque)

o sea, que el teto util este entre strings.

alguna forma?

marzo 12, 2015 | Unregistered CommenterJuan

En la clase String tienes todos los métodos para localizar y extraer subcadenas.

http://docs.oracle.com/javase/8/docs/api/java/lang/String.html

Otra cuestión son los criterios que uses para localizar las subcadenas de interés.

marzo 12, 2015 | Registered Commenterchoces

Sigue un ejemplo, también para JavaSE 1.8, donde se muestra una manera de extraer subcadenas delimitadas de una cadena.


public class NewMain {

private static final String texto = "12345P(primero)lkj5678P(segundo)fffd4(no válido)8555P(tercero)";
private static final String abrir = "P(";
private static final String cerrar = ")";

public static void main(String[] args) {
Map<Integer, Integer> posiciones = new HashMap<>();
int indexOfabrir = texto.indexOf(abrir);
int indexOfcerrar = texto.indexOf(cerrar);
while (indexOfabrir != -1) {
posiciones.put(indexOfabrir, indexOfcerrar);
indexOfabrir = texto.indexOf(abrir, indexOfabrir + abrir.length());
indexOfcerrar = texto.indexOf(cerrar, indexOfabrir + abrir.length());
}
List<String> collect = posiciones.entrySet()
.stream()
.map((Map.Entry<Integer, Integer> entry) -> texto.substring(entry.getKey() + abrir.length(), entry.getValue()))
.collect(Collectors.toList());
System.out.println(collect);
}

}

La salida por consola: [primero, segundo, tercero]

marzo 13, 2015 | Registered Commenterchoces