Vinted é um site de compra e venda de roupas usadas disponíveis em vários países da Europa. Às vezes é útil baixar as fotografias de um artigo.
No momento em que este artigo foi escrito (14 de outubro de 2023), extrair informações do site Vinted era um tanto fácil. Você pode encontrar todos os detalhes abaixo. Você pode baixar todas as fotos com um pequeno script bash, sem precisar de python.
Mas se você quiser mais informações (não apenas as fotografias) ou não sabe como canalizar comandos na linha de comando, aqui está um script python que irá:
baixe e extraia os detalhes sobre um produto Vinted. Este json contém todas as informações disponíveis sobre o produto, o usuário, as fotografias, etc.
baixe todas as fotos do produto em resolução máxima
baixe a foto do perfil do vendedor (com a opção --seller
)
Está funcionando assim:
python3 vinted_downloader.py "PRODUCT_URL"# ou, para baixar também o perfil do vendedor:python3 vinted_downloader.py --seller "PRODUCT_URL"# ou, para baixar também todos os itens disponíveis no perfil do vendedor:python3 vinted_downloader.py --all "PRODUCT_URL "
Então você obtém os seguintes arquivos:
item.json
: todas as informações que você quer e não quer
item_summary
: informações principais (url, título, descrição, etc.)
photo_01.jpg
: todas as fotos do item
seller.jpg
: com a opção --seller
Use a opção -o
para especificar um diretório de saída (o padrão é o diretório atual). Se não existir, será criado. Se você deseja salvar os arquivos em um subdiretório do diretório -o
nomeado automaticamente após o ID e o título do item, use a opção --save-in-dir
. Por exemplo, para criar e salvar automaticamente no diretório my-output/1234-item-title/
, execute:
python3 vinted_downloader.py -o minha saída --save-in-dir "https://www.vinted.fr/items/1234-item-title"
Se você omitir a opção -o
, ela será salva em um subdiretório do diretório atual, ou seja, ./1234-item-title/
.
Se o item for vendido, ir para a url irá redirecionar para a categoria, não para o item, exceto se você estiver logado. Para evitar isso, adicione ?noredirect=1
no final da url.
Se você instalou com pip
, você também pode usar o comando vinted-downloader
:
vinted-downloader "PRODUCT_URL"vinted-downloader --seller "PRODUCT_URL"vinted-downloader --all "PRODUCT_URL"
pip
O download do produto Vinted está no PyPI, então você pode executar:
pip3 instalar vinted-downloader
Todas as dependências são instaladas automaticamente.
Você pode então usar o comando vinted-downloader
assim:
vinted-downloader [--seller] [-o DIR] [--all] "PRODUCT_URL"
ou, se preferir usar python:
python3 -m vinted_downloader [--seller] [-o DIR] [--all] "PRODUCT_URL"
Para atualizar o pacote, execute:
pip3 install --upgrade vinted-downloader
Primeiro você precisa instalar o Python:
vá para https://www.python.org/downloads/
baixe o instalador "Python para Windows"
execute o instalador (clique no arquivo baixado)
marque a caixa "Adicionar python.exe ao PATH" (isso é MUITO IMPORTANTE , veja a imagem abaixo)
clique em "Instalar agora"
Em seguida, abra o Prompt de Comando (digite “prompt” na barra de pesquisa na parte inferior da tela):
digite python --version
para verificar se o Python está instalado corretamente (você deverá ver a versão do Python, e não uma mensagem de erro)
digite pip install vinted-downloader
. Isso instalará o downloader e suas dependências
Em seguida, use-o conforme descrito acima. Por exemplo:
vinted-downloader "PRODUCT_URL"vinted-downloader --seller "PRODUCT_URL"vinted-downloader --all "PRODUCT_URL"
Se o comando vinted-downloader
não funcionar, use:
python -m vinted_downloader "PRODUCT_URL"
Para atualizar, execute:
pip install --upgrade vinted-downloader
Clone o repositório github e instale as dependências.
Para Linux e MacOS:
# clone:git clone https://github.com/boberle/vinted-downloader.git# install deps:cd vinted-downloader python3 -m venv venvsource venv/bin/ativar pip install -r requisitos.txt# use:python3 vinted_downloader.py "PRODUCT_URL"
Todas as informações do item estão em um arquivo JSON baixado junto com o arquivo HTML. O ID do produto é encontrado na URL de um item: https://www.vinted.TLD/items/ITEM_ID-slug
.
Depois de obter o ID do item, você só precisa baixar o arquivo JSON em https://www.vinted.TLD/api/v2/items/ITEM_ID?localize=false
.
Se você baixá-lo com curl, por exemplo, receberá um erro “não autorizado”. Você precisa primeiro se conectar a uma página HTML (por exemplo, a página inicial do vinted, com o mesmo TLD da página do produto) para obter os cookies de autenticação (mesmo que seja uma autenticação anônima) e depois reutilizá-los. É por isso que o script bash abaixo usa 2 comandos curl
.
As partes interessantes do JSON são as seguintes (usando o formato 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"
Mas você pode encontrar muito mais informações no json (o preço, se o item está reservado, oculto, etc.), realmente tudo que está exibido na página, e ainda mais.
Então, se você quiser baixar as fotos no tamanho original usando apenas um script bash:
url=$1item_id=`echo "$url" | grep -oP "(?<=/)d+(?=-)"`curl -H "Aceitar: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Aceitar codificação: gzip, deflate, br" -H "Aceitar idioma: fr-FR,fr;q=0,5" -H "Conexão: keep-alive" -H "Sec-Fetch-Dest: documento" -H "Sec-Fetch-Mode: navegar" -H "Sec-Fetch-Site: cross-site" -H "TE: trailers" -H "Solicitações de atualização inseguras: 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 "Aceitar: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Aceitar codificação: gzip, deflate, br" -H "Aceitar idioma: fr-FR,fr;q=0,5" -H "Conexão: keep-alive" -H "Sec-Fetch-Dest: documento" -H "Sec-Fetch-Mode: navegar" -H "Sec-Fetch-Site: cross-site" -H "TE: trailers" -H "Solicitações de atualização inseguras: 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 em `cat vinted_item.out | gzip -d | jq -r ".item.fotos[] | .full_size_url"`do enrolar -H "Aceitar: texto/html,aplicativo/xhtml+xml,aplicativo/xml;q=0,9,imagem/avif,imagem/webp,*/*;q=0,8" -H "Aceitar codificação: gzip, deflate, br" -H "Aceitar idioma: fr-FR,fr;q=0,5" -H "Conexão: manter vivo" -H "Sec-Fetch-Dest: documento" -H "Modo de busca secundária: navegar" -H "Sec-Fetch-Site: site cruzado" -H "Solicitações de atualização inseguras: 1" -H "Agente do usuário: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0" --output "vinted_photo_$count.jpg" $foto_url ((contagem++)) || verdadeiro
Basta salvá-lo em um arquivo download_full_size_images.sh
e chamá-lo com:
bash -e -x download_full_size_images.sh URL_OF_THE_ITEM
(adaptar o TLD no script ao TLD do seu item)
Esta é a versão 2. Não é compatível com a versão 1.