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

Problema función lectura links

Estas en el tema de Problema función lectura links en el foro de Java en Foros del Web. Buenas, estoy intentando hacer un programa que coja todas los links "internos" que contenga una web www.elpais.es ..., por ejemplo. El caso es que lo ...
  #1 (permalink)  
Antiguo 12/08/2008, 05:00
 
Fecha de Ingreso: enero-2007
Mensajes: 78
Antigüedad: 17 años, 3 meses
Puntos: 0
Problema función lectura links

Buenas, estoy intentando hacer un programa que coja todas los links "internos" que contenga una web www.elpais.es..., por ejemplo. El caso es que lo tengo hecho para que extraiga los links de una web determinada. Pero ahora me toca implementarlo de manera recursiva. El caso es que el mismo programa metido en una función que retorne la lista de links de una web en concreta falla(a pesar de que compila bien), mientras que si lo lanzo dentro del main lo hace perfectamente.

Es la primera vez que uso java asi que no se cual puede ser el error.

Código PHP:
import java.io.*;
import java.net.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
import java.util.*;
import java.lang.String;
import java.util.List;
import java.lang.Object;
import java.io.FileWriter;
import java.lang.String;


class 
GetLinks {

    public static 
void main(String[] args) {
            
         List <
StringNodosV = new ArrayList <String>();
        
String semillas args[0];
                
String NextURL;
        
String webs args[1];
                
                try{
                    
FileWriter links = new FileWriter("Link.txt",true);
                    
NodosV CojerLinks(semillaswebs);

                    while (
NodosV.isEmpty()==false){
            
NextURL NodosV.get(0);
            
NodosV.remove(0);
            
links.write(NextURL);                
                    }                
                }
                catch (
Exception e) {
            
e.printStackTrace();
        }
        }
    
    static List 
CojerLinks (String semillaString web){

        
EditorKit kit = new HTMLEditorKit();
        
Document doc kit.createDefaultDocument();
        
//List NodosN = new ArrayList<String>();
        //NodosV<String> list = new ArrayList<String>();
                
              
List <StringNodosV = new ArrayList <String>();
                List <
StringNodosN = new ArrayList <String>();
                
        
String URL;
        
String NextURL;

        
// La clase documento no maneja todavia apropiadamente los caracteres.
        
doc.putProperty("IgnoreCharsetDirective"Boolean.TRUE);
        try {
            
// Creamos un Reader de contenido HTML
        
            
Reader rd getReader(semilla);
        
            
// Parsea el HTML
            
kit.read(rddoc0);
    
            
// Nos movemos atraves de los elementos del documento HTML
            
ElementIterator it = new ElementIterator(doc);
            
javax.swing.text.Element elem;
            while ((
elem it.next()) != null) {
                
SimpleAttributeSet s = (SimpleAttributeSet)
                
elem.getAttributes().getAttribute(HTML.Tag.A);
                if (
!= null) {
                        
URL=s.getAttribute(HTML.Attribute.HREF).toString();
                                    if (
URL.contains(web)){
                                            
NodosN.add(URL);
                    }        
                    else {
                        if (
URL.contains("www.")==false &&  URL.length()>5){
                            
NodosN.add("http://"+web+URL);
                            
//System.out.println("http://"+semilla+URL);
                        
}    
                    }            
                }
            }
        } 
        catch (
Exception e) {
            
e.printStackTrace();
        }
        
//Iterator iter = NodosN.iterator();
        //while (iter.hasNext())
        //      System.out.println(iter.next());
        
while (NodosN.isEmpty()==false){
                
NextURL NodosN.get(0);
                
NodosN.remove(0);
                
//System.out.println(NextURL);
                
if(NodosV.contains(NextURL)==false){
                    
NodosV.add(NextURL);
                }
        }
        return 
NodosV;

        
//System.exit(1);
    
}
    
// Retornamos un Reador de los datos HTML. Si 'uri' comienza con 'http:'
    // entonces se trata como una URL; de otra forma se asume que es un fichero local
    
static Reader getReader(String urithrows IOException {
    if (
uri.startsWith("http:")) {
        
// Recuperamos de Internet
        
URLConnection conn = new URL(uri).openConnection();
        return new 
InputStreamReader(conn.getInputStream());
        } 
        else {
            
// Recuperamos de fichero local
            
return new FileReader(uri);
        }
    }

Gracias por adelantado
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 05:03.