🌐 Um scraper que retorna o HTML completo de uma URL, tags, classes e atributos usando BeautifulSoup
Project description
🚀 README.md
🌐 Scrapy-HTML
🔍 Scrapy-HTML é um pacote Python simples e eficiente para scraping de conteúdo HTML de qualquer página web. Agora com parâmetros avançados para filtragem por tag, múltiplas tags, classe CSS e atributos personalizados, tornando a raspagem muito mais flexível e poderosa. Ele utiliza as bibliotecas BeautifulSoup4 e Requests para realizar a raspagem e retornar o HTML de forma estruturada e legível.
✨ Características Principais
- 🌎 Faz scraping de qualquer página web com uma URL válida.
- 🔍 Filtragem avançada por:
- Tag única (
tag) - Múltiplas tags (
tags) - Classe CSS (
class_) - ID (
id_) - Atributos personalizados (
attrs) - Headers HTTP personalizados (
headers)
- Tag única (
- ⚡ Múltiplos parsers HTML:
html.parser(padrão): Parser nativo do Pythonlxml: Parser rápido baseado em Chtml5lib: Parser mais leniente e compatível com HTML5
- ⚡ Retorna o HTML formatado e legível usando
BeautifulSoup. - 🔒 Tratamento de erros robusto para URLs inválidas ou problemas de rede.
- 💡 Leve e fácil de usar, com dependências mínimas.
⚡ Instalação
Instale o pacote diretamente do PyPI:
pip install scrapy_html
📦 Parsers Opcionais
Para usar parsers alternativos, instale as dependências opcionais:
# Para usar o parser lxml (mais rápido)
pip install scrapy_html[lxml]
# Para usar o parser html5lib (mais leniente)
pip install scrapy_html[html5lib]
# Para usar todos os parsers
pip install scrapy_html[lxml,html5lib]
💻 Como Usar
🔥 Exemplo básico de uso:
from scrapy_html.scraper import get_html_content
# 🌐 URL da página
url = "https://www.example.com"
# 🔄 Obtendo o conteúdo HTML completo
dados = get_html_content(url)
print(dados)
🎯 Filtragem Avançada:
🔍 Filtrar por tag única:
dados = get_html_content(url, tag="p")
print(dados) # Exibe todas as tags <p>
🏷 Filtrar por múltiplas tags:
dados = get_html_content(url, tags="div,span")
print(dados) # Exibe todas as tags <div> e <span>
🎨 Filtrar por classe CSS:
dados = get_html_content(url, tag="a", class_="link-destaque")
print(dados)
🆔 Filtrar por ID:
dados = get_html_content(url, tag="section", id_="conteudo-principal")
print(dados)
🛠 Filtrar por atributos personalizados:
dados = get_html_content(url, tag="img", attrs={"alt": "Imagem principal"})
print(dados)
🔒 Usar headers personalizados:
headers = {
"User-Agent": "Mozilla/5.0",
"Accept": "text/html",
"Accept-Language": "pt-BR"
}
dados = get_html_content(url, headers=headers)
print(dados)
🔍 Usar diferentes parsers HTML:
# Usando o parser padrão (html.parser)
dados = get_html_content(url)
print(dados)
# Usando o parser lxml (mais rápido)
dados = get_html_content(url, parser="lxml")
print(dados)
# Usando o parser html5lib (mais leniente)
dados = get_html_content(url, parser="html5lib")
print(dados)
🛠 Requisitos
- Python >= 3.6
- beautifulsoup4
- requests
As dependências são instaladas automaticamente com:
pip install scrapy_html
🧪 Testes
Este projeto inclui testes usando pytest. Para rodar os testes localmente:
pip install pytest
pytest tests/
🎨 Recursos Futuros
- 🔍 Parâmetros avançados para scraping filtrado.
- 🌐 Suporte a diferentes parsers (
lxml,html5lib). - 🔄 Scraping assíncrono para maior desempenho.
- ⚡ Download de recursos estáticos (imagens, CSS, JS).
- 🧪 Testes automatizados avançados com
requests-mock.
🏗 Estrutura do Projeto
scrapy_html/
│
├── scrapy_html/ # 📦 Código principal
│ ├── __init__.py
│ └── scraper.py # ⚡ Função principal: get_html_content()
│
├── tests/ # 🧪 Testes automatizados
│ └── test_scraper.py
│
├── setup.py # ⚙️ Configuração para PyPI
├── pyproject.toml # 📦 Configuração moderna
├── README.md # 📚 Documentação do projeto
├── LICENSE # 📜 Licença MIT
└── MANIFEST.in # 📋 Inclusão de arquivos extras
🔧 Contribuindo
Contribuições são bem-vindas! 🚀
Para contribuir, siga estas etapas:
- Fork este repositório.
- Crie uma nova branch:
git checkout -b minha-nova-funcionalidade
- Faça suas alterações e commit:
git commit -m "✨ Adicionando nova funcionalidade incrível"
- Envie para o branch:
git push origin minha-nova-funcionalidade
- Abra um Pull Request. 💡
👨💻 Autor
Desenvolvido por Roberto Lima 🚀✨
💬 Contato
- 📧 Email: robertolima.izphera@gmail.com
- 💼 LinkedIn: Roberto Lima
- 💼 Website: Roberto Lima
- 💼 Gravatar: Roberto Lima
📄 Licença
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scrapy_html-1.2.0.tar.gz.
File metadata
- Download URL: scrapy_html-1.2.0.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
470083597c92d3dcfe5a2c533ea4d8ab5291781209a5c70a1ef10a94cc066513
|
|
| MD5 |
10d559922f5186ad1bd7c9a18a77a692
|
|
| BLAKE2b-256 |
c288cbcf88b2faef8a3b988a126a7ff24560f82594ffc12fb69cd0bae2f13099
|
File details
Details for the file scrapy_html-1.2.0-py3-none-any.whl.
File metadata
- Download URL: scrapy_html-1.2.0-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae7c0045f68df52943beddc6156c8a4b7106fda55b948b0483200f136099aa6d
|
|
| MD5 |
0c502b5948d5190e51b722cc42786b5b
|
|
| BLAKE2b-256 |
a1f057938a185b165fb77b0be06375fd793ce2fa42505d6e736f15cdbd9f4390
|