O seguinte projeto é uma aplicação para extração e exibição de informações de páginas web, utilizando o modelo SmartScraperGraph e uma interface gráfica desenvolvida com Tkinter. A aplicação combina scraping dinâmico com modelos LLM (Large Language Model) para gerar respostas estruturadas e metadados de páginas web.
Nota: Este projeto exige uma configuração local de modelo LLM e as variáveis de ambiente configuradas corretamente para acessar o modelo.
- Scraping Dinâmico e Estático: 🌍
- Lida com páginas dinâmicas e estáticas, usando Selenium quando necessário.
- Interface Gráfica Intuitiva: 🖥️
- Desenvolvida com Tkinter, facilita a interação para inserir URLs e exibir resultados.
- Fallback Dinâmico: 🔄
- Usa
HandlerDinamicpara páginas com conteúdo carregado dinamicamente.
- Usa
- Validação Estruturada: ✅
- Implementa Pydantic para validar e organizar os dados extraídos.
- Resultados Detalhados: 📊
- Exibe dados extraídos, como descrições, tags, confiança do modelo e tempo de processamento.
- Python 3.6+
- Google Chrome e ChromeDriver (para scraping dinâmico com Selenium).
requestspydantictkinter(disponível por padrão em distribuições do Python)seleniumscrapegraphaibeautifulsoup4python-dotenv
Instale todas as dependências com:
pip install -r requirements.txtNota: Configure uma LLM local. As variáveis de ambiente
MODEL_URLePROMPTdevem apontar para o endpoint configurado.
-
Configurar as variáveis de ambiente: ⚙️
- Crie um arquivo
.enve configure:MODEL_URL=http://localhost:5000 PROMPT="Extraia informações estruturadas desta página"
- Crie um arquivo
-
Iniciar a aplicação: 🚀
- Execute o script principal:
python src/main.py
- Execute o script principal:
-
Interagir com a interface: 🎮
- Insira a URL no campo de texto.
- Clique em "Executar Scraper".
- Visualize os resultados detalhados na área de saída.
Um exemplo de resposta estruturada:
{
"descricao": "Texto extraído da página web...",
"tag": "Categoria da página",
"tokens_usados": 100,
"tempo_processamento": 2.3,
"confianca": 0.95,
"metadados": {
"source_url": "http://example.com",
"author": "Autor do conteúdo"
}
}rsc/
├──chromedriver-win32/ # Arquivos necessários para utilizar o chromedriver
│ └──chromedriver.exe
│ └──LICENSE,chromedriver
│ └──THIRD_PARTY_NOTICES.chromedriver
src/
├──Scrapping
│ └── Scrapper.py # Script principal com interface gráfica
│ └── DinamicScrapper.py # Scraper dinâmico com Selenium
│ └──main.py # Arquivo principal de execução
├── Schemas/
│ └── ResponseSchema.py # Esquema de validação dos dados extraídos
test/
├── Scrapper_tests.py # Arquivo de testes
Contribuições são bem-vindas! Siga os passos abaixo:
- Faça um fork do repositório.
- Crie uma branch para suas alterações (
git checkout -b feature/descricao). - Faça commit das mudanças (
git commit -m "Descrição das mudanças"). - Envie a branch para o repositório remoto (
git push origin feature/descricao). - Abra um Pull Request.
Se você tiver dúvidas, sugestões ou encontrar problemas, abra uma issue ou envie um pull request.