E10 Manchetes
Neste exercício, você deve escrever um programa chamado EstadaoHeadlines.java que, quando executado, produz uma saída como nos arquivos titulos.2021.11.09.txt e titulos.2021.11.10.txt abaixo. Essas são as "manchetes" (títulos dos itens) que apareceram na página
nos dias 9/11/2021 e 10/11/2021. Para reproduzir a página acima dos dias 9/11/2021 e 10/11/2021, você pode tentar abrir os arquivos Estadao.2021.11.09.html e Estadao.2021.11.10.html abaixo, usando um browser.
Obtenção de uma página HTML. O programa GetHTMLFile.java abaixo ilustra como obter uma página HTML. Este programa recebe uma URL e um nome de arquivo na linha de comando, e produz uma cópia local da página HTML no arquivo cujo nome foi dado pelo usuário. Seguem alguns exemplos de execução:
$ java-introcs GetHTMLFile https://www5.usp.br USP.html
$ java-introcs GetHTMLFile https://www.cecm.usp.br CCM.html
$ java-introcs GetHTMLFile https://en.wikipedia.org/wiki/42 42.html
Obtenção das manchetes. Com um bom editor de texto, você perceberá que as manchetes (titulos dos itens) que estamos procurando nos arquivos Estadao.2021.11.09.html e Estadao.2021.11.10.html ocorrem como nos seguintes exemplos:
data-title="Com 6 a 0, STF mantém decisão de Rosa Weber de suspender repasses do orçamento secreto"
data-title="Câmara conclui 1º turno da PEC dos precatórios; segunda votação acontece hoje"
data-title="Vídeo: Santista de 9 anos se desculpa por pedir camisa do goleiro do Palmeiras"
Assim, usando coisas como indexOf() e substring(), podemos extrair tais títulos do arquivo Estadao.2021.11.09.html e obter as seguintes linhas do arquivo titulos.2021.11.09.txt:
Com 6 a 1, STF mantém decisão de Rosa Weber de suspender repasses do orçamento secreto
Câmara conclui 1º turno da PEC dos precatórios; segunda votação acontece hoje
Vídeo: Santista de 9 anos se desculpa por pedir camisa do goleiro do Palmeiras
Caracteres acentuados. Infelizmente, como fica claro em dois dos exemplos acima, em arquivos HTML, frequentemente usa-se um esquema específico para codificar caracteres acentuados. Para "decodificar" tais caracteres "acentuados no formato HTML", podemos usar uma certa função de biblioteca. O programa DeHTML.java ilustra o uso dessa biblioteca.
Por simplicidade, vamos colocar todos os arquivos que contêm as funções de biblioteca de que precisamos no diretório onde estamos trabalhando. Precisaremos dos arquivos stdlib.jar, commons-text-1.9.jar e commons-lang3-3.4.jar (todos dados abaixo). Coloque esses 3 arquivos no diretório em que você está trabalhando. Para compilar e executar DeHTML.java, faça o seguinte (o arquivo 3_examples.txt é dado abaixo):
$ javac -cp .:stdlib.jar:commons-text-1.9.jar DeHTML.java
$ java -cp .:stdlib.jar:commons-text-1.9.jar:commons-lang3-3.4.jar DeHTML < 3_examples.txt > 3_clean.txt
O arquivo 3_clean.txt é a versão decodificada de 3_examples.txt.
O programa EstadaoHeadlines.java. Seu programa EstadaoHeadlines.java deve ser escrito para ser compilado e executado da seguinte forma:
$ javac -cp .:stdlib.jar:commons-text-1.9.jar EstadaoHeadlines.java
$ java -cp .:stdlib.jar:commons-text-1.9.jar:commons-lang3-3.4.jar EstadaoHeadlines > titulos.txt
Executando os comandos acima, devemos obter arquivos como titulos.2021.11.09.txt e titulos.2021.11.10.txt.
Entrega. Neste exercício, basta entregar seu programa EstadaoHeadlines.java.
Observação (adicionada 18/11/2021). Acabo de atualizar o pacote de arquivos disponibilizado abaixo.
- 18 de noviembre de 2021, 19:30
- 18 de noviembre de 2021, 19:30