Vinted — это веб-сайт для покупки и продажи подержанной одежды, доступной в нескольких странах Европы. Иногда полезно скачать фотографии статьи.
На момент написания статьи (14 октября 2023 г.) удалить информацию с веб-сайта Vinted довольно легко. Вы можете найти все подробности ниже. Вы можете скачать все фотографии с помощью небольшого bash-скрипта, даже не нуждаясь в Python.
Но если вам нужна дополнительная информация (а не только фотографии) или вы не знаете, как передавать команды в командную строку, вот скрипт Python, который:
загрузите и извлеките подробную информацию о продукте Vinted. Этот json содержит всю доступную информацию о продукте, пользователе, фотографиях и т. д.
скачать все фотографии товара в полном разрешении
загрузить изображение профиля продавца (с опцией --seller
)
Это работает следующим образом:
python3 vinted_downloader.py "PRODUCT_URL"# или, чтобы также загрузить профиль продавца: python3 vinted_downloader.py --seller "PRODUCT_URL"# или, чтобы также загрузить все товары, доступные в профиле продавца: python3 vinted_downloader.py --all "PRODUCT_URL "
Затем вы получите следующие файлы:
item.json
: вся информация, которая вам нужна и не нужна
item_summary
: основная информация (url, заголовок, описание и т. д.)
photo_01.jpg
: все фотографии товара.
seller.jpg
: с опцией --seller
Используйте опцию -o
, чтобы указать выходной каталог (по умолчанию — текущий каталог). Если его не существует, он будет создан. Если вы хотите сохранить файлы в подкаталоге каталога -o
, автоматически названном в честь идентификатора и названия элемента, используйте опцию --save-in-dir
. Например, чтобы автоматически создать и сохранить каталог my-output/1234-item-title/
, запустите:
python3 vinted_downloader.py -o my-output --save-in-dir "https://www.vinted.fr/items/1234-item-title"
Если вы опустите опцию -o
, она будет сохранена в подкаталоге текущего каталога, а именно ./1234-item-title/
.
Если предмет продан, то переход по URL-адресу приведет к перенаправлению на категорию, а не на предмет, за исключением случаев, когда вы вошли в систему. Чтобы избежать этого, добавьте ?noredirect=1
в конце URL-адреса.
Если вы установили его с помощью pip
, вы также можете использовать команду vinted-downloader
:
vinted-downloader "PRODUCT_URL"vinted-downloader --seller "PRODUCT_URL"vinted-downloader --all "PRODUCT_URL"
pip
Загрузка продукта Vinted осуществляется через PyPI, поэтому вы можете запустить:
pip3 установить Vinted-загрузчик
Все зависимости устанавливаются автоматически.
Затем вы можете использовать команду vinted-downloader
следующим образом:
vinted-downloader [--seller] [-o DIR] [--all] "PRODUCT_URL"
или, если вы предпочитаете использовать Python:
python3 -m vinted_downloader [--seller] [-o DIR] [--all] "PRODUCT_URL"
Чтобы обновить пакет, запустите:
pip3 install --upgrade vinted-downloader
Сначала вам нужно установить Python:
перейдите на https://www.python.org/downloads/
скачать установщик "Python для Windows"
запустите установщик (нажмите на скачанный файл)
установите флажок «Добавить python.exe в PATH» (это ОЧЕНЬ ВАЖНО , см. изображение ниже)
нажмите «Установить сейчас»
Затем откройте командную строку (введите «подсказка» в строке поиска внизу экрана):
введите python --version
, чтобы убедиться, что Python установлен правильно (вы должны увидеть версию Python, а не сообщение об ошибке)
введите pip install vinted-downloader
. Это установит загрузчик и его зависимости.
Затем используйте его, как описано выше. Например:
vinted-downloader "PRODUCT_URL"vinted-downloader --seller "PRODUCT_URL"vinted-downloader --all "PRODUCT_URL"
Если команда vinted-downloader
не работает, используйте:
python -m vinted_downloader "PRODUCT_URL"
Для обновления выполните:
pip install --upgrade vinted-downloader
Клонируйте репозиторий github и установите зависимости.
Для Linux и MacOS:
# клон:git clone https://github.com/boberle/vinted-downloader.git# install deps:cd vinted-downloader python3 -m venv venvsource venv/bin/activate pip install -r require.txt# use:python3 vinted_downloader.py "PRODUCT_URL"
Вся информация об элементе находится в файле JSON, загружаемом вместе с файлом HTML. Идентификатор продукта находится в URL-адресе элемента: https://www.vinted.TLD/items/ITEM_ID-slug
.
Как только вы получите идентификатор элемента, вам просто нужно загрузить файл JSON по адресу https://www.vinted.TLD/api/v2/items/ITEM_ID?localize=false
.
Например, если вы загрузите его с помощью Curl, вы получите «несанкционированную» ошибку. Сначала вам необходимо подключиться к HTML-странице (например, к домашней странице vinted с тем же TLD, что и у страницы продукта), чтобы получить файлы cookie аутентификации (даже если это анонимная аутентификация), а затем использовать их повторно. Вот почему в приведенном ниже сценарии bash используются две команды curl
.
Интересными частями JSON являются следующие (с использованием формата jq
):
cat itemdetails.json | jq ".item.title" cat itemdetails.json | jq ".item.description" cat itemdetails.json | jq ".item.photos[] | .full_size_url" cat itemdetails.json | jq ".item.user.login" cat itemdetails.json | jq ".item.user.last_logged_on_ts" cat itemdetails.json | jq ".item.user.photo.full_size_url"
Но в json можно найти гораздо больше информации (цена, зарезервирован ли товар, скрыт и т. д.), действительно все, что отображается на странице, и даже больше.
Итак, если вы хотите скачать фотографии в оригинальном размере, используя только bash-скрипт:
url=$1item_id=`echo "$url" | grep -oP "(?<=/)d+(?=-)"`curl -H "Принять: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Принять-Кодирование: gzip, deflate, br" -H "Accept-Language: fr-FR,fr;q=0.5" -H "Соединение: сохранение активности" -H "Sec-Fetch-Dest: document" -H "Sec-Fetch-Mode: навигация" -H "Sec-Fetch-Site: межсайтовый" -H "TE: трейлеры" -H "Upgrade-Insecure-Requests: 1" -H "User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0" --cookie-jar "vinted_cookies.txt" --output vinted_home.out "https://www.vinted.fr"curl -H "Принять: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Принять-Кодирование: gzip, deflate, br" -H "Accept-Language: fr-FR,fr;q=0.5" -H "Соединение: сохранение активности" -H "Sec-Fetch-Dest: document" -H "Sec-Fetch-Mode: навигация" -H "Sec-Fetch-Site: межсайтовый" -H "TE: трейлеры" -H "Upgrade-Insecure-Requests: 1" -H "User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0" --cookie "vinted_cookies.txt" --output vinted_item.out "https://www.vinted.fr/api/v2/items/$item_id?localize=false"count=0for photo_url в `cat vinted_item.out | gzip -d | jq -r ".item.photos[] | .full_size_url"`do завиток -H "Принять: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Принять-кодирование: gzip, deflate, br" -H "Принять-Язык: fr-FR,fr;q=0,5" -H «Соединение: поддержание активности» -H "Sec-Fetch-Dest: документ" -H "Sec-Fetch-Mode: навигация" -H "Sec-Fetch-Site: межсайтовый" -H "Небезопасные запросы на обновление: 1" -H «Агент пользователя: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0» --output "vinted_photo_$count.jpg" $photo_url ((число++)) || правда сделано
Просто сохраните его в файле download_full_size_images.sh
и вызовите его с помощью:
bash -e -x download_full_size_images.sh URL_OF_THE_ITEM
(адаптируйте TLD в скрипте к TLD вашего товара)
Это версия 2. Не совместима с версией 1.