Autor Tópico: [java] Webcrawler  (Lida 2887 vezes)

KTachyon

  • iOS Software Engineer
  • Super-Moderador
  • Heroi da Nação
  • *****
  • Mensagens: 4311
  • Karma: 0
  • Software Engineer
    • Ver Perfil
    • Google+
[java] Webcrawler
« em: Novembro 24, 2008, 11:38:23 »
Bem, estou de momento a desenvolver um projecto de Web Semântica, em que o tema é um motor de pesquisa semântico. Como esta secção do Webtuga não tem assim muito grande aderência, decidi criar um onde vou colocar os resultados do meu trabalho.

Existem muitos crawlers na internet (para sacar mails das páginas, para spam, sacar os links de uma página, ou mesmo sacar as páginas em si e realizando a indexação automática dos conteúdos). Entre outros, o Nutch, o Web Harvester e o Heritrix. Daqui, o que me interessa mais exactamente é o Web Harvester, que saca o HTML das páginas para que possa ser trabalhado por mim para fazer a indexação segundo uma ontologia que desenvolvi para o motor de pesquisa semântico. No entanto, o Web Harvester é um pouco instável, e implementar um Web Crawler do zero não é assim muito complicado.

O desenvolvimento vai começar neste preciso momento, altura em que não tenho absolutamente código nenhum para mostrar, e, para facilidade e rapidez do desenvolvimento do meu projecto, irá ser desenvolvido tendo em conta as minhas necessidades.

Para os interessados, fiquem atentos ao desenrolar deste tópico.
« Última modificação: Novembro 24, 2008, 11:38:44 por KhAoTiK_TaChYoN »
Citação de: Steve Ballmer
There's no chance that the iPhone is going to get any significant market share. No chance.
Current status: 146.019.000 iPhones sold 'til Oct 2011.
iPad: 39.850.000 iPads sold 'til Oct 2011.
Over 250.000.000 iOS devices sold 'til Oct 2011.

Apple is the 2nd most valuable public company in the world.


cenourinha

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 13032
  • Karma: 16
    • Ver Perfil
    • WebTuga
[java] Webcrawler
« Responder #1 em: Novembro 24, 2008, 11:39:53 »
Força com isso
Always know if the juice is worth the squeeze

GetHost4You - Alojamento Gratuito PHP + MySql
WebTuga Hosting - Alojamento Profissional PHP + MySql

KTachyon

  • iOS Software Engineer
  • Super-Moderador
  • Heroi da Nação
  • *****
  • Mensagens: 4311
  • Karma: 0
  • Software Engineer
    • Ver Perfil
    • Google+
[java] Webcrawler
« Responder #2 em: Novembro 24, 2008, 01:05:59 »
1ª fase:

Código: [Seleccione]
import java.util.*;
import java.util.regex.*;
import java.io.*;
import java.net.*;

public class myCrawler {
    
    private String initURL;
    
    public static void main(String args[]) {
        myCrawler mC = new myCrawler(args[0]);
        mC.go();
    }
    
    public myCrawler(String initURL) {
        this.initURL = initURL;
    }
    
    public void go() {
        try {
            parse4URLs(initURL, getWebPage(initURL));
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    private String getWebPage(String myURL) throws Exception {
        String response = "", line;
        
        URL url = new URL(myURL);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        
        while((line = rd.readLine()) != null)
            response += line + "\n";
        
        return response;
    }
    
    private LinkedList<String> parse4URLs(String urlString, String htmlData) {
        LinkedList<String> res = new LinkedList<String>();
        String regEx = " href=\"(.+?)\"";
        
        String urlParser = "http://(.+?)/";
        Pattern regExPattern = Pattern.compile(urlParser);
        Matcher matchRegEx = regExPattern.matcher(urlString);
        
        if (!matchRegEx.find()) {
            urlParser = "http://(.+?)";
            regExPattern = Pattern.compile(urlParser);
            matchRegEx = regExPattern.matcher(urlString);
        }
        
        String domain = "http://" + matchRegEx.group(1);
        
        // Extract image, flash, etc. addresses
        //regEx = " src=\"(.+?)\" ";
        
        regExPattern = Pattern.compile(regEx);
        matchRegEx = regExPattern.matcher(htmlData);
        
        String dom = urlString.substring(urlString.indexOf("."), urlString.indexOf("/", urlString.indexOf(".")+1));
        dom = dom.replace(".", "\\.");
        
        String domRegEx = "http://(.+?)" + dom;
        Pattern domRegExPattern = Pattern.compile(domRegEx);
        Matcher domRegExMatcher;
        
        while (matchRegEx.find()) {
            String found = matchRegEx.group(1);
            
            if (!found.startsWith("http")) {
                if (found.startsWith("/"))
                    found = domain + found;
                else
                    found = "http://" + found;
            }
            
            domRegExMatcher = domRegExPattern.matcher(found);
            
            if (domRegExMatcher.find()) {
                res.add(found);
                System.out.println(found);
            }
        }
        
        return res;
    }
}


Código: [Seleccione]
java -jar "myCrawler.jar" http://www.youtube.com/
Código: [Seleccione]
[Session started at 2008-11-24 13:03:53 +0000.]
http://www.youtube.com/opensearch?locale=en_US
http://www.youtube.com/rssls
http://m.youtube.com/index?desktop_uri=%2F&
http://www.youtube.com/
http://www.youtube.com/watch_queue?all
http://help.youtube.com/support/youtube/bin/static.py?page=start.cs&hl=en-US
http://www.youtube.com/
http://www.youtube.com/browse
http://www.youtube.com/members
http://www.youtube.com/community
http://www.youtube.com/my_videos_upload
http://www.youtube.com/my_videos_upload
http://www.youtube.com/my_videos_quick_capture
http://www.youtube.com/cthru?key=Ma4_T7Y_1r9I_IbzQru554nIm2BVM--Nt_-CVI0RVeKq_wFP1Gv3fC7kRnFlxd8ATzYAOXPteLxvWtrnxFlXTjoYABEGOGgVJ-653H5ak-rQdsPGYLb5O7eVzaInw48aBeTMQbSG7g5JFviHC90OcNchviKZaCOXqBY47SNOnLBkei1lrtlXyIRLfg
sRcaeE1m1dHaUMgcMHHG1-CIfOeA==
http://www.youtube.com/cthru?key=Ma4_T7Y_1r9I_IbzQru554nIm2BVM--Nt_-CVI0RVeKq_wFP1Gv3fC7kRnFlxd8ATzYAOXPteLxvWtrnxFlXTjoYABEGOGgVJ-653H5ak-rQdsPGYLb5O7eVzaInw48aBeTMQbSG7g5JFviHC90OcNchviKZaCOXqBY47SNOnLBkei1lrtlXyIRLfg
sRcaeE1m1dHaUMgcMHHG1-CIfOeA==
http://www.youtube.com/user/Katers17
http://www.youtube.com/cthru?key=ck919uSsesp-MrAUhTsf_-iuLbFNZd1OzHqLvmfwoltJDs-b7AJPkSkJnSeFuQHlW2u2mBXnLPqYJHdeLSsu651-9cyvm1cRMI2SmqTCa82Ha1qyPqY5mUdQCuAYTWDJ_3Vu5M9CJI-NsCoSK8fRNYWv5ZRq_RB8NnR2z4Ackih12mckYCQ4UFba4f9c3V25inbdV2mvpcoixkOIhboXoQ==
http://www.youtube.com/cthru?key=ck919uSsesp-MrAUhTsf_-iuLbFNZd1OzHqLvmfwoltJDs-b7AJPkSkJnSeFuQHlW2u2mBXnLPqYJHdeLSsu651-9cyvm1cRMI2SmqTCa82Ha1qyPqY5mUdQCuAYTWDJ_3Vu5M9CJI-NsCoSK8fRNYWv5ZRq_RB8NnR2z4Ackih12mckYCQ4UFba4f9c3V25inbdV2mvpcoixkOIhboXoQ==
http://www.youtube.com/user/yrf
http://www.youtube.com/cthru?key=P0oHvuuwqyFxufQy5xmX5QhNLt25SbLiGrNbp65mM8ouQZDKqNyyw5mqaUL2DX3k1L9F8bw5-HE9Wv-aiIQm__Wk_LVMfakF6X2d-7PZwBDaB-RF20axV37tKkx5XKLBVR85qSe29dVBVFu15yKBfLnTE3lFNPhinI3nez6GX2zsfXAYTLVE4p7n-7cQuYZ7Wfa7lLAjm32zI5xiIMCmEw==
http://www.youtube.com/cthru?key=P0oHvuuwqyFxufQy5xmX5QhNLt25SbLiGrNbp65mM8ouQZDKqNyyw5mqaUL2DX3k1L9F8bw5-HE9Wv-aiIQm__Wk_LVMfakF6X2d-7PZwBDaB-RF20axV37tKkx5XKLBVR85qSe29dVBVFu15yKBfLnTE3lFNPhinI3nez6GX2zsfXAYTLVE4p7n-7cQuYZ7Wfa7lLAjm32zI5xiIMCmEw==
http://www.youtube.com/user/SecretAgentBob
http://www.youtube.com/cthru?key=4ALDq-GT13KdC8eobmDyu_b2wphjobf9f_yiAwfQcfGlLCv_Beza1bcd8_y_aVQ57FeLH-A3O_FUQ4qaB5ySGVEJXUduSPBs5VoVpqDQfTNskylnuApGPtgdRz8MOHjOytuiVfkiLmJ30ujIbUAtAg
GyVaYqDiNGfsScU-YMTzWIVX8vVTNc97TdCwkS8toEDTWKDsXQVb8ygnY4Iy9rKw==
http://www.youtube.com/cthru?key=4ALDq-GT13KdC8eobmDyu_b2wphjobf9f_yiAwfQcfGlLCv_Beza1bcd8_y_aVQ57FeLH-A3O_FUQ4qaB5ySGVEJXUduSPBs5VoVpqDQfTNskylnuApGPtgdRz8MOHjOytuiVfkiLmJ30ujIbUAtAg
GyVaYqDiNGfsScU-YMTzWIVX8vVTNc97TdCwkS8toEDTWKDsXQVb8ygnY4Iy9rKw==
http://www.youtube.com/user/freddiew
http://www.youtube.com/browse?s=rf
http://www.youtube.com/watch?v=F-2zo9DacEc
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=F-2zo9DacEc
http://www.youtube.com/watch?v=F-2zo9DacEc
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=NQv5V2Ljfa4
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=NQv5V2Ljfa4
http://www.youtube.com/watch?v=NQv5V2Ljfa4
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=gw2JAsaCso0
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=gw2JAsaCso0
http://www.youtube.com/watch?v=gw2JAsaCso0
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=TTIViMQQ3IE
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=TTIViMQQ3IE
http://www.youtube.com/watch?v=TTIViMQQ3IE
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=OBHfb2sVWV4
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=OBHfb2sVWV4
http://www.youtube.com/watch?v=OBHfb2sVWV4
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=b0S7LXH023M
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=b0S7LXH023M
http://www.youtube.com/watch?v=b0S7LXH023M
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=7A0sjIh6_YQ
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=7A0sjIh6_YQ
http://www.youtube.com/watch?v=7A0sjIh6_YQ
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=CG2irStCt_g
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=CG2irStCt_g
http://www.youtube.com/watch?v=CG2irStCt_g
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=bbKWYVR9178
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=bbKWYVR9178
http://www.youtube.com/watch?v=bbKWYVR9178
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=v2F-Emds6eA
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=v2F-Emds6eA
http://www.youtube.com/watch?v=v2F-Emds6eA
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=ZOmU_2hYVM0
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=ZOmU_2hYVM0
http://www.youtube.com/watch?v=ZOmU_2hYVM0
http://www.youtube.com/user/Live
http://www.youtube.com/watch?v=0jhu1f0xrDc
http://www.youtube.com/watch_queue?all
http://www.youtube.com/watch?v=0jhu1f0xrDc
http://www.youtube.com/watch?v=0jhu1f0xrDc
http://www.youtube.com/user/Live
http://www.youtube.com/browse?s=rf
http://www.youtube.com/t/captions_about
http://www.youtube.com/t/captions_about
http://www.youtube.com/t/annotations_about
http://www.youtube.com/t/annotations_about
http://www.youtube.com/blog
http://www.youtube.com/blog
http://www.youtube.com/live
http://www.youtube.com/live
http://www.youtube.com/my_videos
http://www.youtube.com/inbox
http://help.youtube.com/support/youtube/bin/static.py?page=start.cs&hl=en-US
http://help.youtube.com/group/youtube-help?hl=en_US
http://www.youtube.com/t/about
http://www.youtube.com/press_room
http://www.youtube.com/my_favorites
http://www.youtube.com/my_subscriptions
http://www.youtube.com/t/safety
http://www.youtube.com/t/dmca_policy
http://www.youtube.com/testtube
http://www.youtube.com/t/contact_us
http://www.youtube.com/my_playlists
http://www.youtube.com/my_account
http://www.youtube.com/dev
http://www.youtube.com/t/community_guidelines
http://www.youtube.com/t/terms
http://www.youtube.com/blog
http://www.youtube.com/advertise
http://www.youtube.com/youtubeonyoursite
http://www.youtube.com/t/privacy
http://www.youtube.com/t/yt_handbook_home

java has exited with status 0.
Citação de: Steve Ballmer
There's no chance that the iPhone is going to get any significant market share. No chance.
Current status: 146.019.000 iPhones sold 'til Oct 2011.
iPad: 39.850.000 iPads sold 'til Oct 2011.
Over 250.000.000 iOS devices sold 'til Oct 2011.

Apple is the 2nd most valuable public company in the world.

KTachyon

  • iOS Software Engineer
  • Super-Moderador
  • Heroi da Nação
  • *****
  • Mensagens: 4311
  • Karma: 0
  • Software Engineer
    • Ver Perfil
    • Google+
[java] Webcrawler
« Responder #3 em: Novembro 24, 2008, 02:43:19 »
Fase final:

Após a criação do anterior programa, que faz o parsing, procurando pelos links de apenas uma página, apenas é necessário criar as condições para que o crawler aceda a esses links (rapidamente) e arrume as correspondentes páginas, associadas ao link em questão. Utilizei uma Hashtable para manter todos os links já encontrados e o código HTML correspondente à página. A rapidez é conseguida através de threads (o 3º parametro do crawler indica o número de threads que irão tratar das páginas).

O segundo parametro indica a profundidade do crawling. Pode-se considerar como parametro de paragem.

Não é 100% fiável, visto que não tenho nenhuma forma de controlo das threads, mas já serve para demonstrar como é um web crawler minimalista.

Código: [Seleccione]
import java.util.*;
import java.util.regex.*;
import java.io.*;
import java.net.*;

public class myCrawler extends Thread {
    
    private String initURL;
    private myCrawler sObj = null;
    protected int depth = 0, maxDepth;
    protected LinkedList<String> currentURLList;
    protected LinkedList<String> nextURLList;
    protected Hashtable<String, String> urlDataHT;
    
    public static void main(String args[]) {
        myCrawler mC = new myCrawler(args[0], Integer.parseInt(args[1]));
        mC.init(Integer.parseInt(args[2]));
    }
    
    public myCrawler(String initURL, int maxDepth) {
        this.initURL = initURL;
        this.maxDepth = maxDepth;
        urlDataHT = new Hashtable<String, String>();
        sObj = this;
        
        currentURLList = new LinkedList<String>();
        nextURLList = new LinkedList<String>();
    }
    
    public myCrawler(myCrawler sObj) {
        this.sObj = sObj;
    }
    
    public void init(int threads) {
        try {
            parse4URLs(initURL, getWebPage(initURL), depth);
        }
        catch (Exception e) {
            System.out.println("Bad URL - check if it ends with /");
            e.printStackTrace();
        }
        
        for (int i = 0; i < threads; i++) {
            (new myCrawler(this)).start();
        }
    }
    
    public void run() {
        while (true) {
            String url = "";
            int myDepth = 0;
            
            synchronized (sObj.currentURLList) {
                if (sObj.currentURLList.isEmpty()) {
                    if (++sObj.depth < sObj.maxDepth) {
                        synchronized (sObj.nextURLList) {
                            sObj.currentURLList = sObj.nextURLList;
                        }
                        
                        myDepth = sObj.depth;
                        url = sObj.currentURLList.remove(0);
                    }
                }
                else {
                    myDepth = sObj.depth;
                    url = sObj.currentURLList.remove(0);
                }
            }
            
            if (url.equals("")) {
                return;
            }
                
            try {
                parse4URLs(url, getWebPage(url), depth);
            }
            catch (Exception e) {
                System.out.println("Oh... crap... shit happens! " + url);
                e.printStackTrace();
            }
        }
    }

    private String getWebPage(String myURL) throws Exception {
        String response = "", line;
        
        URL url = new URL(myURL);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        
        while((line = rd.readLine()) != null)
            response += line + "\n";
        
        sObj.urlDataHT.put(myURL, response);
        
        return response;
    }
    
    private void parse4URLs(String urlString, String htmlData, int currentDepth) {
        String regEx = " href=\"(.+?)\"";
        
        String urlParser = "http://(.+?)/";
        Pattern regExPattern = Pattern.compile(urlParser);
        Matcher matchRegEx = regExPattern.matcher(urlString);
        
        if (!matchRegEx.find()) {
            urlParser = "http://(.+?)";
            regExPattern = Pattern.compile(urlParser);
            matchRegEx = regExPattern.matcher(urlString);
        }
        
        String domain = "http://" + matchRegEx.group(1);
        
        // Extract image, flash, etc. addresses
        //regEx = " src=\"(.+?)\" ";
        
        regExPattern = Pattern.compile(regEx);
        matchRegEx = regExPattern.matcher(htmlData);
        
        String dom = urlString.substring(urlString.indexOf("."), urlString.indexOf("/", urlString.indexOf(".")+1));
        dom = dom.replace(".", "\\.");
        
        String domRegEx = "^http://([^\\.]+?)" + dom;
        Pattern domRegExPattern = Pattern.compile(domRegEx);
        Matcher domRegExMatcher;
        
        while (matchRegEx.find()) {
            String found = matchRegEx.group(1);
            
            if (!found.startsWith("http")) {
                if (found.startsWith("/"))
                    found = domain + found;
                else
                    found = "http://" + found;
            }
            
            domRegExMatcher = domRegExPattern.matcher(found);
            
            if (domRegExMatcher.find()) {
                if (!sObj.urlDataHT.containsKey(found)) {
                    synchronized (sObj.urlDataHT) {
                        sObj.urlDataHT.put(found, "");
                    }
                    
                    if (currentDepth == sObj.depth)
                        synchronized (sObj.nextURLList) {
                            sObj.nextURLList.add(found);
                        }
                    else
                        synchronized (sObj.currentURLList) {
                            sObj.currentURLList.add(found);
                        }
                    
                    System.out.println(found);
                }
            }
        }
    }
}
« Última modificação: Novembro 24, 2008, 03:25:36 por KhAoTiK_TaChYoN »
Citação de: Steve Ballmer
There's no chance that the iPhone is going to get any significant market share. No chance.
Current status: 146.019.000 iPhones sold 'til Oct 2011.
iPad: 39.850.000 iPads sold 'til Oct 2011.
Over 250.000.000 iOS devices sold 'til Oct 2011.

Apple is the 2nd most valuable public company in the world.

tecnotape

  • Novato
  • *
  • Mensagens: 2
  • Karma: 0
    • Ver Perfil
[java] Webcrawler
« Responder #4 em: Março 10, 2009, 10:50:42 »
Olá amigo achei muito massa seu topico, mas não entendi 100% .

ele faz o redirecionamento para outra pagina como se tive-se no youtube ?
[color="#FF0000"][/color]

disculpa ae qualquer coisa mas q eu essa é minha primeira participação no forum

KTachyon

  • iOS Software Engineer
  • Super-Moderador
  • Heroi da Nação
  • *****
  • Mensagens: 4311
  • Karma: 0
  • Software Engineer
    • Ver Perfil
    • Google+
[java] Webcrawler
« Responder #5 em: Março 11, 2009, 06:43:36 »
Basicamente, ele começa com uma página inicial. Não significa que seja imediatamente o YouTube, depende de como executares.

Quanto ao processo, o programa irá pesquisar por URLs no código da página, que irão ser colocados numa tabela e, de seguida irá aprofundar a pesquisa para cada uma das páginas a que corresponde esse endereço, até ao nível máximo que for definido.

Ou seja, imagina que começas numa página com dois endereços para outras duas páginas distintas. Depois de achar esses dois endereços, o programa vai aceder a essas páginas e procurar por mais endereços. Se a profundidade definida ainda não tiver sido atingida, o programa volta a repetir o processo.

Não sei se a explicação está clara, mas podes ler mais em http://en.wikipedia.org/wiki/Web_crawler, se souberes inglês. Fiz uma pesquisa rápida, mas, infelizmente não encontrei nenhuma página com uma explicação em português.
Citação de: Steve Ballmer
There's no chance that the iPhone is going to get any significant market share. No chance.
Current status: 146.019.000 iPhones sold 'til Oct 2011.
iPad: 39.850.000 iPads sold 'til Oct 2011.
Over 250.000.000 iOS devices sold 'til Oct 2011.

Apple is the 2nd most valuable public company in the world.

tecnotape

  • Novato
  • *
  • Mensagens: 2
  • Karma: 0
    • Ver Perfil
[java] Webcrawler
« Responder #6 em: Março 11, 2009, 03:36:01 »
exatamente isso mesmo q estava querendo .
add akele msn do seu perfil.

tem como vc me add ae para me passar algumas dicas?
tecnotape@hotmail.com
agradeço a atenção

sp3c

  • Administrador
  • Heroi da Nação
  • *****
  • Mensagens: 1325
  • Karma: 0
    • Ver Perfil
[java] Webcrawler
« Responder #7 em: Março 11, 2009, 10:49:13 »
fiz um search crawler à uns tempos, tinha por aí um livro (ainda devo ter, mas tenho que procurar) que explicava como fazer um search crawler passo por passo


olha o teste, fiz um pesquisa em webtuga.com pela palavra SPEC o .log que ele devolveu continha estes links


Citar
http://webtuga.com
http://webtuga.com/
http://appletuga.com/
http://boorlix.com/
http://deskmodpt.org/
http://mobiletuga.com/
http://webtuga.com/categorias/
http://webtuga.com/bloggers/
http://ffmpeg-php.sourceforge.net/
http://webtuga.com/aim-crm-software-de-cus...hip-management/
http://webtuga.com/kumo-ja-envia-visitas-para-o-webtuga/
http://muziic.com/
http://blog.boxee.tv/2009/03/06/the-trials...-of-innovation/
http://webtuga.com/page/2/
http://webtuga.com/page/3/
http://webtuga.com/page/4/
http://feeds.feedburner.com/webtuga
http://amaczone.com/
http://32lvegas.com/pt
http://onlinecasinoswiss.com/pt/

olha um screen do programa em acção




o código é extenso demais para por aqui, caso alguém queira dar uma espreitadela é só dizer e envio por PM

EDIT:
O Livro chama-se Art of Java e tem lá o código todo deste exemplo acima...
« Última modificação: Março 11, 2009, 10:58:01 por sp3c »

trmanco

  • Super-Moderador
  • Heroi da Nação
  • *****
  • Mensagens: 2378
  • Karma: 0
    • Ver Perfil
    • http://trmanco.com
[java] Webcrawler
« Responder #8 em: Março 12, 2009, 06:41:05 »
heheheh

NetBeans :D

KTachyon

  • iOS Software Engineer
  • Super-Moderador
  • Heroi da Nação
  • *****
  • Mensagens: 4311
  • Karma: 0
  • Software Engineer
    • Ver Perfil
    • Google+
[java] Webcrawler
« Responder #9 em: Abril 09, 2009, 04:22:05 »
Epah, não sei por que carga de água é que tanta gente vem parar a este tópico e acha que eu tenho a fórmula secreta para algumas vulnerabilidades no YouTube e no Orkut. Isto é um crawler. Serve para seguir e registar links entre páginas. Não serve para fazer com que endereços do YouTube vão parar a servidores com exploits.

E não me peçam para fazer trabalhinhos destes a troco de dinheiro, porque não vão receber sequer resposta. E, se não percebem para que serve, então nem vale a pena sequer vir falar comigo acerca disto.

Obrigado pela compreensão.
« Última modificação: Abril 09, 2009, 04:25:06 por KhAoTiK_TaChYoN »
Citação de: Steve Ballmer
There's no chance that the iPhone is going to get any significant market share. No chance.
Current status: 146.019.000 iPhones sold 'til Oct 2011.
iPad: 39.850.000 iPads sold 'til Oct 2011.
Over 250.000.000 iOS devices sold 'til Oct 2011.

Apple is the 2nd most valuable public company in the world.