Una biblioteca avanzada para extraer datos de Pinterest sin necesidad de API
Project description
PinScrap स्क्रैप
Una biblioteca avanzada y asíncrona para extraer datos de Pinterest sin necesidad de una API oficial. Diseñada para ser rápida, confiable y fácil de usar.
⚠️ Advertencia Importante
Este proyecto realiza scraping en Pinterest. El uso de esta biblioteca debe cumplir con los Términos de Servicio de Pinterest y las leyes de propiedad intelectual aplicables. Úsala de manera responsable y bajo tu propio riesgo.
🚀 Características Principales
- Búsqueda Avanzada: Encuentra pines por palabras clave con soporte para paginación.
- Información Detallada: Obtén metadatos completos de cualquier pin.
- Descarga de Imágenes: Descarga imágenes en alta calidad de forma asíncrona.
- Perfiles de Usuario: Explora los pines de cualquier usuario de Pinterest.
- Tipado Estático: Mejor experiencia de desarrollo con tipos anotados.
- Asíncrono: Máximo rendimiento con
asyncioyPlaywright. - Robusto: Manejo de errores y reintentos automáticos.
📦 Instalación
pip install pinscrap
Instala los navegadores necesarios para Playwright:
playwright install
🚀 Ejemplos Rápidos
Búsqueda de Pines
import asyncio
from pinscrap import PinScrapClient
async def main():
client = PinScrapClient(headless=True)
try:
# Buscar pines
result = await client.search("programación python", limit=5)
print(f"Encontrados {result.pin_count} pines:")
for i, pin in enumerate(result.pins, 1):
print(f"\n{i}. {pin.description or 'Sin descripción'}")
print(f" URL: {pin.image_url}")
if pin.creator:
print(f" Por: {pin.creator.username}")
finally:
await client.close()
asyncio.run(main())
Descargar Imágenes
import asyncio
from pathlib import Path
from pinscrap import PinScrapClient, batch_download
async def main():
client = PinScrapClient(headless=True)
try:
# Buscar pines
result = await client.search("gatitos", limit=3)
# Descargar imágenes
download_dir = Path("descargas_gatitos")
download_dir.mkdir(exist_ok=True)
urls = [pin.image_url for pin in result.pins if pin.image_url]
downloaded = await batch_download(urls, directory=download_dir)
print(f"\n¡Descargadas {len(downloaded)} imágenes en '{download_dir}/'!")
finally:
await client.close()
asyncio.run(main())
Obtener Información de un Pin
import asyncio
from pinscrap import PinScrapClient
async def main():
client = PinScrapClient(headless=True)
try:
pin = await client.get_pin_info("https://www.pinterest.com/pin/1234567890/")
print(f"Descripción: {pin.description}")
print(f"Imagen: {pin.image_url}")
if pin.creator:
print(f"Creador: {pin.creator.username}")
finally:
await client.close()
asyncio.run(main())
📚 Documentación Completa
Clase PinScrapClient
Métodos Principales
-
search(query: str, limit: int = 50) -> SearchResult- Busca pines en Pinterest.
query: Término de búsqueda.limit: Número máximo de pines a devolver.
-
get_pin_info(pin_url: str) -> Optional[Pin]- Obtiene información detallada de un pin.
pin_url: URL completa del pin.
-
get_user_pins(username: str, limit: int = 50) -> List[Pin]- Obtiene los pines de un usuario.
username: Nombre de usuario en Pinterest.limit: Número máximo de pines a devolver.
Funciones de Utilidad
-
download_pin_image(url, directory, filename=None)- Descarga una imagen de un pin.
-
batch_download(urls, directory, max_concurrent=5)- Descarga múltiples imágenes de forma concurrente.
🛠️ Manejo de Errores
La biblioteca incluye excepciones específicas para un mejor manejo de errores:
PinScrapException: Clase base para todos los errores.PinterestInteractionException: Error al interactuar con Pinterest.PinNotFoundError: No se encontró el pin solicitado.InvalidPinUrlError: URL de pin inválida.RateLimitExceededError: Límite de solicitudes excedido.NetworkError: Error de red.
🤝 Contribuir
¡Las contribuciones son bienvenidas! Por favor, lee nuestras pautas de contribución antes de enviar un pull request.
📄 Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más información.
🌟 Desarrollado por Patchyn
Este proyecto es mantenido por el equipo de Patchyn. ¡Gracias por usarlo! ❤️
📊 Estadísticas
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 pinscrap-0.1.1.tar.gz.
File metadata
- Download URL: pinscrap-0.1.1.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9e1445e88f96c58c77c9cf4342b1c9e4915c34317d70c46f4b30017f9b29234
|
|
| MD5 |
c0f156c34f4f3b6f691ef98ec2205701
|
|
| BLAKE2b-256 |
bbd153f1295450057730462b8be42d09bb57cdba4736e314c98b1226db97b7c1
|
File details
Details for the file pinscrap-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pinscrap-0.1.1-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
713b52132cf76853da36f97ba46f85f55af76a035e8e79d9e682fc2bcba73184
|
|
| MD5 |
e9379a4988b4ad11d2a1b99efd76bd1b
|
|
| BLAKE2b-256 |
d03698b8c10f13f618c812912fdc6329be37fde75a49386d1197769f96edd158
|