Esta biblioteca facilita a extração e download de imagens do Pinterest. Usando Selenium para automação, ele permite aos usuários extrair imagens de um URL específico do Pinterest e salvá-las em um diretório escolhido.
Inclui uma CLI para uso direto e uma API Python para acesso programático. A ferramenta suporta a extração de imagens de quadros e pins públicos e privados usando cookies do navegador. Ele também permite que os usuários salvem URLs copiados em um arquivo JSON para acesso futuro.
️ Isenção de responsabilidade:
Este projeto é independente e não afiliado ao Pinterest. Ele foi projetado exclusivamente para fins educacionais. Esteja ciente de que automatizar a extração de sites pode entrar em conflito com seus Termos de Serviço. O proprietário do repositório isenta-se de qualquer responsabilidade pelo uso indevido desta ferramenta. Use-o com responsabilidade e por sua própria conta e risco legal.
?️ Nota:
Este projeto se inspira no raspador de imagens do Pinterest.
alt
para imagens como comment
de metadados na imagem baixada para facilitar a pesquisa.--client chrome
ou --client firefox
) (consulte solicitação pull pip install pinterest-dl
git clone https://github.com/sean1832/pinterest-dl.git
cd pinterest-dl
pip install .
pinterest-dl [command] [options]
Raspar imagens no modo anônimo:
Raspe imagens em modo anônimo, sem login, para o diretório ./images/art
da URL do Pinterest https://www.pinterest.com/pin/1234567
com limite de 30
imagens e resolução mínima de 512x512
. Salve URLs copiados em um arquivo JSON
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -r 512x512 --json
Obtenha cookies do navegador:
Obtenha cookies do navegador para login no Pinterest e salve-os no arquivo cookies.json
no modo headful (com janela do navegador).
pinterest-dl login -o cookies.json --headful
Dica
Você será solicitado a inserir seu e-mail e senha do Pinterest. A ferramenta salvará os cookies do navegador no arquivo especificado para uso futuro.
Raspando quadros privados:
Raspe imagens de um painel privado do Pinterest usando os cookies salvos no arquivo cookies.json
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -c cookies.json
Dica
Você pode usar a opção --client
para usar chrome
ou firefox
Webdriver para raspagem. Isso é mais lento, mas mais confiável. Ele abrirá um navegador no modo headless para extrair imagens. Você também pode usar o sinalizador --headful
para executar o navegador em modo de janela.
Baixando imagens:
Baixe imagens do arquivo art.json
para o diretório ./downloaded_imgs
com resolução mínima de 1024x1024
.
pinterest-dl download art.json -o downloaded_imgs -r 1024x1024
Faça login no Pinterest usando suas credenciais para obter cookies do navegador para coletar pins e painéis privados.
Sintaxe:
pinterest-dl login [options]
Opções:
-o
, --output [file]
: arquivo para salvar cookies do navegador para uso futuro. (padrão: cookies.json
)--client
: Escolha o cliente de raspagem ( chrome
/ firefox
). (padrão: chrome
)--headful
: Executa no modo headful com a janela do navegador.--verbose
: Habilita saída detalhada para depuração.--incognito
: ativa o modo de navegação anônima para raspagem. Dica
Após inserir o comando login
, você será solicitado a inserir seu e-mail e senha do Pinterest. A ferramenta salvará os cookies do navegador no arquivo especificado para uso futuro. (se não for especificado, será salvo em ./cookies.json
)
Extraia imagens de um URL específico do Pinterest.
Sintaxe:
pinterest-dl scrape [url] [output_dir] [options]
Opções:
-c
, --cookies [file]
: Arquivo contendo cookies do navegador para painéis/pins privados. Execute o comando login
para obter cookies.-l
, --limit [number]
: Número máximo de imagens para download (padrão: 100).-r
, --resolution [width]x[height]
: Resolução mínima da imagem para download (por exemplo, 512x512).--timeout [second]
: Tempo limite em segundos para solicitações (padrão: 3).--json
: Salve URLs copiados em um arquivo JSON.--dry-run
: executa o scrape sem baixar imagens.--verbose
: Habilita saída detalhada para depuração.--client
: Escolha o cliente de scraping ( api
/ chrome
/ firefox
). (padrão: API)--incognito
: ativa o modo de navegação anônima para raspagem. ( somente cromo/firefox )--headful
: Executa no modo headful com a janela do navegador. ( somente cromo/firefox ) Baixe imagens de uma lista de URLs fornecidas em um arquivo.
Sintaxe:
pinterest-dl download [url_list] [options]
Opções:
-o
, --output [directory]
: diretório de saída (padrão: ./<json_filename>).-r
, --resolution [width]x[height]
: resolução mínima para download (por exemplo, 512x512).--verbose
: habilita a saída detalhada. Você também pode usar a classe PinterestDL
diretamente em seu código Python para extrair e baixar imagens programaticamente.
O exemplo a seguir mostra como extrair e baixar imagens de um URL do Pinterest em uma única etapa.
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. Obter cookies Você precisa primeiro fazer login no Pinterest para obter cookies do navegador para coletar pins e painéis 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 com cookies Depois de obter cookies, você pode usá-los para raspar quadros e pins 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
)
)
Use este exemplo se precisar de um controle mais granular sobre a extração e download de imagens.
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 )
Licença Apache 2.0