Olá João, tudo bem com você?
Então, aqui temos uma questão, você pretende fazer web scrapping
, ou obter os dados de um servidor?
Por exemplo, é bastante comum termos API's, que são servidores que fornecem dados para nós, por exemplo:
Aqui na Alura em um dos projetos temos um servidor público para buscar os dados na seguinte url: https://api-pacientes.herokuapp.com/pacientes
Se quisermos obter esses dados com o Java precisaremos de 1 biblioteca chamada Gson
que converte os dados que recebemos ( no formato JSON) em classes, um exemplo simples:
public class Main {
public static void main(String[] args) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL("https://api-pacientes.herokuapp.com/pacientes");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while((line = reader.readLine()) != null){
response.append(line);
}
System.out.println(response.toString());
Aqui é bem simples estamos criando uma conexão HTTP, dizendo que queremos fazer uma chamada do tipo GET
e passamos a resposta para o nosso BufferedReader
E teremos como resposta isso:
[ { "nome": "Jéssica", "peso": 47, "altura": 1.54, "gordura": 17, "imc": 19.82 }, { "nome": "Flavio", "peso": 70, "altura": 1.7, "gordura": 17, "imc": 24.22 }, { "nome": "Teresa", "peso": 60, "altura": 1.7, "gordura": 13, "imc": 20.76 }, { "nome": "Marina", "peso": 75, "altura": 1.7, "gordura": 26, "imc": 25.95 }, { "nome": "Lucas", "peso": 23, "altura": 1.25, "gordura": 10, "imc": 14.72 }, { "nome": "Stevie", "peso": 73, "altura": 1.75, "gordura": 10, "imc": 23.84 }, { "nome": "Daniel", "peso": 78, "altura": 1.85, "gordura": 19, "imc": 22.79 }]
Para transformar isso em objetos, podemos fazer o download do Gson aqui, e adicionar no nosso projeto igual foi ensinado na parte 5 de java
Gson gson = new Gson();
Pessoa[] pessoas = gson.fromJson(response.toString(), Pessoa[].class);
E dessa forma teremos com sucesso obtido os dados da API e transformado em objetos da classe Pessoa, vou deixar o link do código completo aqui
2 . WebScrapping
Aqui na Alura não tem cursos de WebScrapping, um curso que pode te ajudar é o de Selenium, que é uma biblioteca para testar sites, mas cursos voltados para extração de dados de html não há
Mas temos uma biblioteca bem simples que é o JSoup
que é utilizado para ler páginas html, aqui tem o download dele e para utilizar é bem simples, basta entender de manipular a DOM, um exemplo
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
public class WebScrapping {
public static void main(String[] args) {
try {
Connection conn = Jsoup.connect("https://cursos.alura.com.br/forum/topico-buscando-dados-da-rede-129220");
Document document = conn.get();
Elements element = document.getElementsByClass("topic-post-content");
System.out.println(element.select("p").first());
} catch (IOException e) {
e.printStackTrace();
}
Dessa maneira conseguímos fazer web scrapping em diversos sites :)
Ai você pode olhar uns artigos, vídeos no youtube, ou ler a documentação que é bem simples
Abraços e Bons Estudos!