Esta biblioteca facilita la extracción y descarga de imágenes de Pinterest. Al utilizar Selenium para la automatización, permite a los usuarios extraer imágenes de una URL de Pinterest específica y guardarlas en un directorio elegido.
Incluye una CLI para uso directo y una API de Python para acceso programático. La herramienta admite la extracción de imágenes de tableros y pines públicos y privados mediante cookies del navegador. También permite a los usuarios guardar las URL eliminadas en un archivo JSON para acceder a ellas en el futuro.
️ Descargo de responsabilidad:
Este proyecto es independiente y no está afiliado a Pinterest. Está diseñado únicamente con fines educativos. Tenga en cuenta que la automatización del raspado de sitios web puede entrar en conflicto con sus Términos de servicio. El propietario del repositorio se exime de cualquier responsabilidad por el mal uso de esta herramienta. Úselo responsablemente y bajo su propio riesgo legal.
?️ Nota:
Este proyecto se inspira en pinterest-image-scraper.
alt
para las imágenes como comment
de metadatos en la imagen descargada para facilitar la búsqueda.--client chrome
o --client firefox
) (consulte la solicitud de extracción pip install pinterest-dl
git clone https://github.com/sean1832/pinterest-dl.git
cd pinterest-dl
pip install .
pinterest-dl [command] [options]
Raspado de imágenes en modo anónimo:
Extraiga imágenes en modo anónimo, sin iniciar sesión, en el directorio ./images/art
desde la URL de Pinterest https://www.pinterest.com/pin/1234567
con un límite de 30
imágenes y una resolución mínima de 512x512
. Guarde las URL raspadas en un archivo JSON
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -r 512x512 --json
Obtener cookies del navegador:
Obtenga las cookies del navegador para iniciar sesión en Pinterest y guárdelas en el archivo cookies.json
en modo frontal (con la ventana del navegador).
pinterest-dl login -o cookies.json --headful
Consejo
Se le pedirá que ingrese su correo electrónico y contraseña de Pinterest. La herramienta guardará las cookies del navegador en el archivo especificado para uso futuro.
Raspado de tableros privados:
Extraiga imágenes de un tablero privado de Pinterest utilizando las cookies guardadas en el archivo cookies.json
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -c cookies.json
Consejo
Puede usar la opción --client
para usar chrome
o firefox
Webdriver para raspar. Esto es más lento pero más confiable. Abrirá un navegador en modo sin cabeza para extraer imágenes. También puede utilizar el indicador --headful
para ejecutar el navegador en modo de ventana.
Descarga de imágenes:
Descargue imágenes del archivo art.json
al directorio ./downloaded_imgs
con una resolución mínima de 1024x1024
.
pinterest-dl download art.json -o downloaded_imgs -r 1024x1024
Inicie sesión en Pinterest utilizando sus credenciales para obtener cookies del navegador para extraer tableros y pines privados.
Sintaxis:
pinterest-dl login [options]
Opciones:
-o
, --output [file]
: archivo para guardar las cookies del navegador para uso futuro. (predeterminado: cookies.json
)--client
: elige el cliente de scraping ( chrome
/ firefox
). (predeterminado: chrome
)--headful
: se ejecuta en modo headful con la ventana del navegador.--verbose
: habilita la salida detallada para la depuración.--incognito
: activa el modo incógnito para raspar. Consejo
Después de ingresar el comando login
, se le pedirá que ingrese su correo electrónico y contraseña de Pinterest. Luego, la herramienta guardará las cookies del navegador en el archivo especificado para su uso futuro. (si no se especifica, se guardará en ./cookies.json
)
Extraiga imágenes de una URL de Pinterest específica.
Sintaxis:
pinterest-dl scrape [url] [output_dir] [options]
Opciones:
-c
, --cookies [file]
: archivo que contiene cookies del navegador para tableros/pins privados. Ejecute el comando login
para obtener cookies.-l
, --limit [number]
: número máximo de imágenes para descargar (predeterminado: 100).-r
, --resolution [width]x[height]
: resolución mínima de imagen para descargar (por ejemplo, 512x512).--timeout [second]
: tiempo de espera en segundos para solicitudes (predeterminado: 3).--json
: guarda las URL eliminadas en un archivo JSON.--dry-run
: ejecuta scrape sin descargar imágenes.--verbose
: habilita la salida detallada para la depuración.--client
: elija el cliente de scraping ( api
/ chrome
/ firefox
). (predeterminado: API)--incognito
: activa el modo incógnito para raspar. ( solo cromo/firefox )--headful
: se ejecuta en modo headful con la ventana del navegador. ( solo cromo/firefox ) Descargue imágenes de una lista de URL proporcionadas en un archivo.
Sintaxis:
pinterest-dl download [url_list] [options]
Opciones:
-o
, --output [directory]
: directorio de salida (predeterminado: ./<json_filename>).-r
, --resolution [width]x[height]
: resolución mínima para descargar (por ejemplo, 512x512).--verbose
: habilita la salida detallada. También puede utilizar la clase PinterestDL
directamente en su código Python para extraer y descargar imágenes mediante programación.
El siguiente ejemplo muestra cómo extraer y descargar imágenes de una URL de Pinterest en un solo paso.
from pinterest_dl import PinterestDL
# Initialize and run the Pinterest image downloader with specified settings
images = PinterestDL . with_api (
timeout = 3 , # Timeout in seconds for each request (default: 3)
verbose = False , # Enable detailed logging for debugging (default: False)
). scrape_and_download (
url = "https://www.pinterest.com/pin/1234567" , # Pinterest URL to scrape
output_dir = "images/art" , # Directory to save downloaded images
limit = 30 , # Max number of images to download
min_resolution = ( 512 , 512 ), # Minimum resolution for images (width, height) (default: None)
json_output = "art.json" , # File to save URLs of scraped images (default: None)
dry_run = False , # If True, performs a scrape without downloading images (default: False)
add_captions = True , # Adds image `alt` text as metadata to images (default: False)
)
2a. Obtener cookies Primero debe iniciar sesión en Pinterest para obtener cookies del navegador para extraer tableros y pines privados.
import os
import json
from pinterest_dl import PinterestDL
# Make sure you don't expose your password in the code.
email = input ( "Enter Pinterest email: " )
password = os . getenv ( "PINTEREST_PASSWORD" )
# Initialize browser and login to Pinterest
cookies = PinterestDL . with_browser (
browser_type = "chrome" ,
headless = True ,
). login ( email , password ). get_cookies (
after_sec = 7 , # Time to wait before capturing cookies. Login may take time.
)
# Save cookies to a file
with open ( "cookies.json" , "w" ) as f :
json . dump ( cookies , f , indent = 4 )
2b. Raspe con cookies Después de obtener cookies, puede usarlas para raspar tableros y pines privados.
from pinterest_dl import PinterestDL
# Initialize and run the Pinterest image downloader with specified settings
images = (
PinterestDL . with_api ()
. with_cookies (
"cookies.json" , # Path to cookies file
)
. scrape_and_download (
url = "https://www.pinterest.com/pin/1234567" , # Assume this is a private board URL
output_dir = "images/art" , # Directory to save downloaded images
limit = 30 , # Max number of images to download
)
)
Utilice este ejemplo si necesita un control más granular sobre la extracción y descarga de imágenes.
import json
from pinterest_dl import PinterestDL
# 1. Initialize PinterestDL with API.
scraped_images = PinterestDL . with_api (). scrape (
url = "https://www.pinterest.com/pin/1234567" , # URL of the Pinterest page
limit = 30 , # Maximum number of images to scrape
min_resolution = ( 512 , 512 ), # <- Only available to set in the API. Browser mode will have to pruned after download.
)
# 2. Save Scraped Data to JSON
# Convert scraped data into a dictionary and save it to a JSON file for future access
images_data = [ img . to_dict () for img in scraped_images ]
with open ( "art.json" , "w" ) as f :
json . dump ( images_data , f , indent = 4 )
# 3. Download Images
# Download images to a specified directory
downloaded_imgs = PinterestDL . download_images ( images = scraped_images , output_dir = "images/art" )
valid_indices = list ( range ( len ( downloaded_imgs ))) # All images are valid to add captions
# 4. Add Alt Text as Metadata
# Extract `alt` text from images and set it as metadata in the downloaded files
PinterestDL . add_captions ( images = downloaded_imgs , indices = valid_indices )
import json
from pinterest_dl import PinterestDL
# 1. Initialize PinterestDL with API.
scraped_images = PinterestDL . with_browser (
browser_type = "chrome" , # Browser type to use ('chrome' or 'firefox')
headless = True , # Run browser in headless mode
). scrape (
url = "https://www.pinterest.com/pin/1234567" , # URL of the Pinterest page
limit = 30 , # Maximum number of images to scrape
)
# 2. Save Scraped Data to JSON
# Convert scraped data into a dictionary and save it to a JSON file for future access
images_data = [ img . to_dict () for img in scraped_images ]
with open ( "art.json" , "w" ) as f :
json . dump ( images_data , f , indent = 4 )
# 3. Download Images
# Download images to a specified directory
downloaded_imgs = PinterestDL . download_images ( images = scraped_images , output_dir = "images/art" )
# 4. Prune Images by Resolution
# Remove images that do not meet the minimum resolution criteria
valid_indices = PinterestDL . prune_images ( images = downloaded_imgs , min_resolution = ( 200 , 200 ))
# 5. Add Alt Text as Metadata
# Extract `alt` text from images and set it as metadata in the downloaded files
PinterestDL . add_captions ( images = downloaded_imgs , indices = valid_indices )
Licencia Apache 2.0