Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] ¿Cómo extraer enlaces de una URL?

Estas en el tema de ¿Cómo extraer enlaces de una URL? en el foro de Java en Foros del Web. Buenas tardes, estaba probando este código y no logro hacer que funcione: Use el ejemplo de: [URL="http://chuwiki.chuidiang.org/index.php?title=Extraer_enlaces_de_una_URL_con_Jav a"]http://chuwiki.chuidiang.org/index.php?title=Extraer_enlaces_de_una_URL_con_Jav a[/URL] Código: public class ExtractLinksFromUrl { public ...
  #1 (permalink)  
Antiguo 14/06/2016, 10:41
 
Fecha de Ingreso: noviembre-2014
Mensajes: 17
Antigüedad: 9 años, 5 meses
Puntos: 0
¿Cómo extraer enlaces de una URL?

Buenas tardes, estaba probando este código y no logro hacer que funcione:
Use el ejemplo de:
[URL="http://chuwiki.chuidiang.org/index.php?title=Extraer_enlaces_de_una_URL_con_Jav a"]http://chuwiki.chuidiang.org/index.php?title=Extraer_enlaces_de_una_URL_con_Jav a[/URL]

Código:
public class ExtractLinksFromUrl {

   public static void main(String[] args) throws Exception {
	   
	      String content = extractContent("https://www.taringa.net/post/humor/19461893/Imagenes-divertidas-para-acortar-la-semana.html");
	      showLinks(content);
	
	}

	   
 private static String extractContent(String urlString)throws MalformedURLException, IOException {
      URL url = new URL(urlString);
      URLConnection urlConnection = url.openConnection();
      InputStream is = urlConnection.getInputStream();
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      String content = "";
      String linea = br.readLine();
      while((linea = br.readLine())!=null){
    	  content+=linea;
          linea = br.readLine();	
         }
      br.close();
      return content;
   }

   private static void showLinks(String content) {
      Pattern pattern = Pattern.compile("(?i)HREF\\s*=\\s*\"(.*?)\"");
      Matcher matcher = pattern.matcher(content);
      while (matcher.find()) {
         System.out.println(matcher.group(1));
      }

   }
Con algunas páginas funciona y con otras no, en este caso no da errores pero tampoco muestra nada.
  #2 (permalink)  
Antiguo 14/06/2016, 12:10
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: ¿Cómo extraer enlaces de una URL?

Hola:

¿Una página concreta en la que no funcione?

Fijate en este trozo

Código Java:
Ver original
  1. Pattern.compile("(?i)HREF\\s*=\\s*\"(.*?)\"");

es la expresión regular para buscar enlaces, que es href (en mayúsculas o minúsculas) un igual, unas comillas dobles, el enlace y cierre de comillas dobles. La expresión es solo a modo de ejemplo sencillo, si el enlace no cumple ese patrón (por ejemplo, usa comillas sencillas), no lo encontrará.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 14/06/2016, 14:52
 
Fecha de Ingreso: noviembre-2014
Mensajes: 17
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: ¿Cómo extraer enlaces de una URL?

De la página que deje por defecto en el código, me lee esto:
Código:
<head><title>302 Found</title></head><body bgcolor="white"><center><h1>302 Found</h1></center></body></html>
Cuando voi a ver el código fuente de la página, todo se ve normal.
Supongo que el problema está al leer la página no en la expresión regular.
  #4 (permalink)  
Antiguo 14/06/2016, 15:03
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: ¿Cómo extraer enlaces de una URL?

Me da que tienen puesto una redirección a nivel de servidor. Dale un vistazo a este link para saber de que se trata. Seguramente si pones un sniffer http en tu pc y visitas la página desde un navegador verás como se hace la redirección 302.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 27/06/2016, 07:39
 
Fecha de Ingreso: noviembre-2014
Mensajes: 17
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: ¿Cómo extraer enlaces de una URL?

Solucionado (a medias xd).
Con algunas web funciona con otras no, a algunas que no funcionaba (por error 403) le agregué un "user agent header" y funcionó.
Fuente:

http://stackoverflow.com/questions/13670692/403-forbidden-with-java-but-not-web-browser
  #6 (permalink)  
Antiguo 28/06/2016, 00:47
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: ¿Cómo extraer enlaces de una URL?

Hola:

No sé si el código lo has arreglado o no, pero esto que tienes

Código Java:
Ver original
  1. while((linea = br.readLine())!=null){
  2.           content+=linea;
  3.           linea = br.readLine();   
  4.          }

lee dos lineas (una en el while readLine() y otra dentro del bucle, pero solo trata una. Y adicionalmente, la linea que tienes delante del bucle

Código Java:
Ver original
  1. String linea = br.readLine();

lee una primera línea y la tira.

Según como esté hecha la web (si tiene una o varias lineas) y si los enlaces caen o no en las lineas que tratas, puede saltarte o mostrarte enlaces.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: enlaces, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:33.