Cette bibliothèque facilite le scraping et le téléchargement d'images depuis Pinterest. En utilisant Selenium pour l'automatisation, il permet aux utilisateurs d'extraire des images d'une URL Pinterest spécifiée et de les enregistrer dans un répertoire choisi.
Il comprend une CLI pour une utilisation directe et une API Python pour l'accès par programmation. L'outil prend en charge la récupération d'images de tableaux et d'épingles publics et privés à l'aide des cookies du navigateur. Il permet également aux utilisateurs d'enregistrer les URL récupérées dans un fichier JSON pour un accès ultérieur.
️ Clause de non-responsabilité:
Ce projet est indépendant et non affilié à Pinterest. Il est conçu uniquement à des fins éducatives. Veuillez noter que l'automatisation du scraping des sites Web peut entrer en conflit avec leurs conditions d'utilisation. Le propriétaire du référentiel décline toute responsabilité en cas de mauvaise utilisation de cet outil. Utilisez-le de manière responsable et à vos propres risques juridiques.
?️ Remarque :
Ce projet s'inspire de Pinterest-image-scraper.
alt
pour les images en tant que comment
de métadonnées dans l'image téléchargée pour faciliter la recherche.--client chrome
ou --client firefox
) (voir pull request pip install pinterest-dl
git clone https://github.com/sean1832/pinterest-dl.git
cd pinterest-dl
pip install .
pinterest-dl [command] [options]
Grattage d'images en mode anonyme :
Grattez les images en mode anonyme, sans connexion, vers le répertoire ./images/art
à partir de l'URL Pinterest https://www.pinterest.com/pin/1234567
avec une limite de 30
images et une résolution minimale de 512x512
. Enregistrez les URL récupérées dans un fichier JSON
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -r 512x512 --json
Obtenez les cookies du navigateur :
Obtenez les cookies du navigateur pour la connexion à Pinterest et enregistrez-les dans le fichier cookies.json
en mode headful (avec fenêtre du navigateur).
pinterest-dl login -o cookies.json --headful
Conseil
Vous serez invité à saisir votre e-mail et votre mot de passe Pinterest. L'outil enregistrera les cookies du navigateur dans le fichier spécifié pour une utilisation future.
Scraping des tableaux privés :
Grattez les images d'un tableau Pinterest privé à l'aide des cookies enregistrés dans le fichier cookies.json
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -c cookies.json
Conseil
Vous pouvez utiliser l'option --client
pour utiliser chrome
ou firefox
Webdriver pour le scraping. C'est plus lent mais plus fiable. Il ouvrira un navigateur en mode sans tête pour récupérer des images. Vous pouvez également utiliser l'indicateur --headful
pour exécuter le navigateur en mode fenêtré.
Téléchargement d'images :
Téléchargez les images du fichier art.json
dans le répertoire ./downloaded_imgs
avec une résolution minimale de 1024x1024
.
pinterest-dl download art.json -o downloaded_imgs -r 1024x1024
Connectez-vous à Pinterest en utilisant vos informations d'identification pour obtenir des cookies de navigateur permettant de supprimer les tableaux et les épingles privés.
Syntaxe:
pinterest-dl login [options]
Possibilités :
-o
, --output [file]
: Fichier pour enregistrer les cookies du navigateur pour une utilisation future. (par défaut : cookies.json
)--client
: Choisissez le client de scraping ( chrome
/ firefox
). (par défaut : chrome
)--headful
: Exécuté en mode headful avec la fenêtre du navigateur.--verbose
: Active la sortie détaillée pour le débogage.--incognito
: Activez le mode incognito pour le scraping. Conseil
Après avoir entré la commande login
, vous serez invité à saisir votre e-mail et votre mot de passe Pinterest. L'outil enregistrera ensuite les cookies du navigateur dans le fichier spécifié pour une utilisation ultérieure. (s'il n'est pas spécifié, il sera enregistré dans ./cookies.json
)
Extrayez les images d'une URL Pinterest spécifiée.
Syntaxe:
pinterest-dl scrape [url] [output_dir] [options]
Possibilités :
-c
, --cookies [file]
: Fichier contenant les cookies du navigateur pour les tableaux/épingles privés. Exécutez la commande login
pour obtenir les cookies.-l
, --limit [number]
: Nombre maximum d'images à télécharger (par défaut : 100).-r
, --resolution [width]x[height]
: Résolution minimale de l'image à télécharger (par exemple, 512x512).--timeout [second]
: Délai d'expiration en secondes pour les requêtes (par défaut : 3).--json
: enregistre les URL récupérées dans un fichier JSON.--dry-run
: Exécute scrape sans télécharger d'images.--verbose
: Active la sortie détaillée pour le débogage.--client
: Choisissez le client de scraping ( api
/ chrome
/ firefox
). (par défaut : API)--incognito
: Activez le mode incognito pour le scraping. ( chrome/firefox uniquement )--headful
: Exécuté en mode headful avec la fenêtre du navigateur. ( chrome/firefox uniquement ) Téléchargez des images à partir d'une liste d'URL fournies dans un fichier.
Syntaxe:
pinterest-dl download [url_list] [options]
Possibilités :
-o
, --output [directory]
: Répertoire de sortie (par défaut : ./<json_filename>).-r
, --resolution [width]x[height]
: résolution minimale à télécharger (par exemple 512x512).--verbose
: Activer la sortie détaillée. Vous pouvez également utiliser la classe PinterestDL
directement dans votre code Python pour récupérer et télécharger des images par programme.
L'exemple suivant montre comment récupérer et télécharger des images à partir d'une URL Pinterest en une seule étape.
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. Obtenir des cookies Vous devez d'abord vous connecter à Pinterest pour obtenir des cookies de navigateur permettant de récupérer les tableaux et les épingles privés.
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. Gratter avec des cookies Après avoir obtenu des cookies, vous pouvez les utiliser pour gratter des tableaux et des épingles privés.
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
)
)
Utilisez cet exemple si vous avez besoin d’un contrôle plus granulaire sur le scraping et le téléchargement d’images.
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 )
Licence Apache 2.0