Эта библиотека облегчает сбор и загрузку изображений из Pinterest. Используя Selenium для автоматизации, он позволяет пользователям извлекать изображения из указанного URL-адреса Pinterest и сохранять их в выбранный каталог.
Он включает в себя CLI для прямого использования и API Python для программного доступа. Инструмент поддерживает сбор изображений с общедоступных и частных досок и пинов с помощью файлов cookie браузера. Это также позволяет пользователям сохранять очищенные URL-адреса в файл JSON для дальнейшего доступа.
️ Отказ от ответственности:
Этот проект является независимым и не связан с Pinterest. Он создан исключительно в образовательных целях. Имейте в виду, что автоматизация очистки веб-сайтов может противоречить их Условиям обслуживания. Владелец репозитория отказывается от какой-либо ответственности за неправильное использование этого инструмента. Используйте его ответственно и на свой юридический риск.
?️ Примечание:
Этот проект черпает вдохновение из Pinterest-image-scraper.
alt
текст для изображений в качестве comment
к метаданным в загруженное изображение для удобства поиска.--client chrome
или --client firefox
) (см. запрос на извлечение pip install pinterest-dl
git clone https://github.com/sean1832/pinterest-dl.git
cd pinterest-dl
pip install .
pinterest-dl [command] [options]
Парсинг изображений в анонимном режиме:
Соскребайте изображения в анонимном режиме без входа в систему в каталог ./images/art
с URL-адреса Pinterest https://www.pinterest.com/pin/1234567
с ограничением в 30
изображений и минимальным разрешением 512x512
. Сохраните очищенные URL-адреса в файл JSON
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -r 512x512 --json
Получить файлы cookie браузера:
Получите файлы cookie браузера для входа в Pinterest и сохраните их в файл cookies.json
в режиме headful (с окном браузера).
pinterest-dl login -o cookies.json --headful
Кончик
Вам будет предложено ввести адрес электронной почты и пароль Pinterest. Инструмент сохранит файлы cookie браузера в указанный файл для использования в будущем.
Очистка частных досок:
Собирайте изображения с частной доски Pinterest, используя файлы cookie, сохраненные в файле cookies.json
.
pinterest-dl scrape " https://www.pinterest.com/pin/1234567 " " images/art " -l 30 -c cookies.json
Кончик
Вы можете использовать опцию --client
, чтобы использовать chrome
или firefox
Webdriver для очистки. Это медленнее, но надежнее. Он откроет браузер в безгласном режиме для очистки изображений. Вы также можете использовать флаг --headful
для запуска браузера в оконном режиме.
Загрузка изображений:
Загрузите изображения из файла art.json
в каталог ./downloaded_imgs
с минимальным разрешением 1024x1024
.
pinterest-dl download art.json -o downloaded_imgs -r 1024x1024
Войдите в Pinterest, используя свои учетные данные, чтобы получить файлы cookie браузера для очистки частных досок и пинов.
Синтаксис:
pinterest-dl login [options]
Параметры:
-o
, --output [file]
: файл для сохранения файлов cookie браузера для будущего использования. (по умолчанию: cookies.json
)--client
: выберите клиент очистки ( chrome
/ firefox
). (по умолчанию: chrome
)--headful
: запуск в режиме headful с окном браузера.--verbose
: включить подробный вывод для отладки.--incognito
: активировать режим инкогнито для очистки. Кончик
После ввода команды login
вам будет предложено ввести адрес электронной почты и пароль Pinterest. Затем инструмент сохранит файлы cookie браузера в указанный файл для использования в будущем. (если не указано, будет сохранено в ./cookies.json
)
Извлекайте изображения из указанного URL-адреса Pinterest.
Синтаксис:
pinterest-dl scrape [url] [output_dir] [options]
Параметры:
-c
, --cookies [file]
: файл, содержащий файлы cookie браузера для частных досок/пинов. Запустите команду login
, чтобы получить файлы cookie.-l
, --limit [number]
: максимальное количество изображений для загрузки (по умолчанию: 100).-r
, --resolution [width]x[height]
: минимальное разрешение изображения для загрузки (например, 512x512).--timeout [second]
: тайм-аут в секундах для запросов (по умолчанию: 3).--json
: сохранить очищенные URL-адреса в файл JSON.--dry-run
: выполнить очистку без загрузки изображений.--verbose
: включить подробный вывод для отладки.--client
: выберите клиент парсинга ( api
/ chrome
/ firefox
). (по умолчанию: API)--incognito
: активировать режим инкогнито для очистки. ( только Chrome/Firefox )--headful
: запуск в режиме headful с окном браузера. ( только Chrome/Firefox ) Загрузите изображения из списка URL-адресов, представленного в файле.
Синтаксис:
pinterest-dl download [url_list] [options]
Параметры:
-o
, --output [directory]
: Выходной каталог (по умолчанию: ./<json_filename>).-r
, --resolution [width]x[height]
: минимальное разрешение для загрузки (например, 512x512).--verbose
: включить подробный вывод. Вы также можете использовать класс PinterestDL
непосредственно в своем коде Python для программного очистки и загрузки изображений.
В следующем примере показано, как очистить и загрузить изображения с URL-адреса Pinterest за один шаг.
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)
)
2а. Получение файлов cookie. Вам необходимо сначала войти в Pinterest, чтобы получить файлы cookie браузера для очистки частных досок и пинов.
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 )
2б. Очистка с помощью файлов cookie . После получения файлов cookie вы можете использовать их для очистки частных досок и булавок.
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
)
)
Используйте этот пример, если вам нужен более детальный контроль над очисткой и загрузкой изображений.
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 )
Лицензия Апач 2.0