require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(URI.open('https://onebitcode.com'))
titulo = doc.at('h1').text
puts "Título da página: #{titulo}"
Coletando múltiplos elementos
Agora vamos extrair todos os títulos de posts (h3 dentro de links):
doc.css('h3 a').each do |link|
puts "Post: #{link.text.strip}"
end
🎓 Projeto Final: Sistema de Tradução
Seu desafio é criar um sistema de tradução que:
Recebe uma frase do usuário
Identifica o idioma original
Traduz para o idioma de destino
Armazena o resultado em um arquivo
Requisitos do Projeto
1. Estrutura da Classe
Crie uma classe Translator que encapsule toda a lógica de tradução:
class Translator
def initialize(api_key)
@api_key = api_key
end
def translate(text, from, to)
# Implementação da tradução
end
end
2. Armazenamento de Resultados
Salve cada tradução em um arquivo com nome baseado na data/hora:
def save_translation(original, translated, from_lang, to_lang)
filename = "traducoes/traducao_#{Time.now.strftime('%Y%m%d_%H%M%S')}.txt"
File.open(filename, "w") do |file|
file.puts "Original (#{from_lang}): #{original}"
file.puts "Traduzido (#{to_lang}): #{translated}"
end
end
3. Integração com API
Use uma API de tradução como a Google Translate ou DeepL:
def call_translation_api(text, from, to)
# Implemente a chamada à API aqui
# Exemplo com HTTParty:
response = HTTParty.post(
'https://api.translate.com/v2',
body: {
text: text,
source: from,
target: to
}.to_json,
headers: {
'Authorization' => "Bearer #{@api_key}",
'Content-Type' => 'application/json'
}
)
JSON.parse(response.body)['translatedText']
end
💡 Dicas Finais
Tratamento de Erros
Não esqueça de implementar tratamento de erros para suas requisições:
begin
# Seu código que pode falhar
rescue Net::HTTPError => e
puts "Erro na requisição HTTP: #{e.message}"
rescue JSON::ParserError => e
puts "Erro ao processar JSON: #{e.message}"
end
Testando Seu Código
Crie casos de teste para verificar seu sistema:
# Exemplo de teste simples
translator = Translator.new(ENV['TRANSLATE_API_KEY'])
translation = translator.translate("Hello", "en", "pt")
if translation == "Olá"
puts "Teste passou!"
else
puts "Teste falhou. Recebido: #{translation}"
end
0 Comentários