Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2008, 05:00
Belzebu
 
Fecha de Ingreso: enero-2007
Mensajes: 78
Antigüedad: 18 años, 2 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