- No código de uma página HTML há diversas tags para apresentar o conteúdo da melhor forma.
- Para uma análise mais cautelosa, há o interesse de contabilizar a quantidade de cada tag HTML em uma determinada página.
- É necessário criar um programa para identificar as tags HTML existentes nas páginas que forem carregadas por meio da URL informada.
- Deve ser contado quantas vezes cada tag aparece em cada página.
- É necessário mostrar as informações coletadas para possibilitar verificar os dados da URL informada.
- Assim, as URL, tags e as respectivas contagens devem ser armazenadas em um banco de dados.
<html>
<head>
<title>Teste prático</title>
</head>
<body>
<h1>Olá</h1>
<p>Teste 1</p>
<p>Teste 2</p>
<p>Teste 3</p>
</body>
</html>
Tag | Quantidade |
---|---|
html | 1 |
head | 1 |
title | 1 |
body | 1 |
h1 | 1 |
p | 3 |
classDiagram
class Tags {
+ Long id
+ String tag
+ Long quantidade
+ Urls urlInfo
}
class Urls {
+ Long id
+ String url
}
Tags "1" -- "many" Urls : urlInfo
CREATE TABLE tb_urls (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
url VARCHAR(255) NOT NULL
);
CREATE TABLE tb_tags (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
tag VARCHAR(255) NOT NULL,
quantidade BIGINT,
url_info_id BIGINT,
FOREIGN KEY (url_info_id) REFERENCES tb_urls(id)
);
- Bilioteca usada para extrair a quantidade de tags e seus respectivos nomes das URLs informadas
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.16.1</version>
</dependency>
- Bilioteca usada para criar as tabelas do banco de dados dentro da pasta db/migration
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-mysql</artifactId>
</dependency>
- Bilioteca usada para conectar o projeto ao MySQL
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
- Bilioteca usada para utilizar as interfaces e anotações ajudando a manipular os dados
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
- Bilioteca usada para integrar as respostas do controller em páginas html
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>