quinta-feira, 2 de junho de 2016

Web Scraping com Jsoup


Fala galera!

Em nosso post sobre web scraping, falamos um pouco do que é e como é utilizado esta técnica muito útil. Então resolvi compartilhar com vocês um implementação simples de web scraping em java utilizando a biblioteca Jsoup.



A biblioteca Jsoup foi desenvolvida para trabalhar com HTML para realizar a extração e manipulação de dados, usando métodos do DOM, CSS e métodos jQuery. É um projeto open source e está disponível no GitHub.

Let's get started!

Antes de começar, é preciso acessar a página de download do Jsoup e baixar os jars disponíveis. Se você utiliza maven, poderá copiar a dependência e inserir em seu pom.xml:

<dependency>
  <!-- jsoup HTML parser library @ http://jsoup.org/ -->
  <groupid>org.jsoup</groupid>
  <artifactid>jsoup</artifactid>
  <version>1.9.2</version>
</dependency>

Assim que estiver tudo certo em seu projeto, criaremos uma classe de teste.
Esta classe ficará da seguinte forma:

package com.deviscoming;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class ExemploJSoup {

 public static void main(String[] args) {

  try {
   Document doc = Jsoup.connect("http://www.google.com").get();
   String titulo = doc.title();
   System.out.println("Título do site: " + titulo );
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

No console de sua IDE será possível visualizar a mensagem com o título do site:

Título do site: Google

Para obter toda a página Html, é preciso utilizar o método estático Jsoup.connect() e utilizar o método get(), pois, desta forma, você obterá um objeto Document. Este objeto possui um documento HTML armazenado internamente. Então para obter informações da página, basta utilizar os métodos disponíveis a partir deste objeto.

Caso queira obter elementos específicos, você pode utilizar o método select(). Ele retorna um objeto Elements, sendo este objeto um conjunto de objetos Element.

package com.deviscoming;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class ExemploJSoup {

 public static void main(String[] args) {

  try {
   Document doc = Jsoup.connect("http://www.google.com").get();
   String titulo = doc.title();  
   //System.out.println("Título do site: " + titulo );
   
   //exibe todas as tags a existentes na página html   
   System.out.println("Links do site (tags a): " + doc.select("a"));

   //exibe o texto da tag a      
   System.out.println("href: "+doc.select("a").text());
    
   //exibe todas as tags que possuem o atributo href   
   Elements elements = doc.select("a[href]");
   for(int i = 0; i < elements.size();i++){
    System.out.println("href: "+elements.get(i).text());
   }     
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

Para ter mais informações sobre essa biblioteca, aconselho a acessarem o site do Jsoup, lá tem várias dicas, downloads e a documentação completa para consulta. Acessem também o site Raspando web com Jsoup, de onde foi tirado o conteúdo deste post e lá tem mais dicas e informações essenciais para o desenvolvimento do seu projeto. E também acessem o GitHub, analisem, estudem e quem sabe você não acaba se tornando parte da equipe de desenvolvimento? rsrsr

Até mais!

;) 
Renan Rodrigues Ramos Desenvolvedor

Sou desenvolvedor, amo desenvolvimento de software, músico e apaixonado por filmes e seriados.