Vinted は、ヨーロッパのいくつかの国で販売されている古着を売買するウェブサイトです。 記事の写真をダウンロードすると便利な場合があります。
この記事の執筆時点 (2023 年 10 月 14 日) では、Vinted Web サイトから情報をスクラップするのはある程度簡単です。 詳細は以下でご覧いただけます。 Python を必要とせずに、小さな bash スクリプトを使用してすべての写真をダウンロードできます。
ただし、(写真だけでなく) さらに詳しい情報が必要な場合、またはコマンド ラインでコマンドをパイプする方法がわからない場合は、次の 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
オプションを使用して出力ディレクトリを指定します (デフォルトは現在のディレクトリ)。 存在しない場合は作成されます。アイテム ID とタイトルに基づいて自動的に名前が付けられる-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 に移動するとアイテムではなくカテゴリにリダイレクトされます。これを回避するには、URL の末尾に?noredirect=1
を追加します。
pip
を使用してインストールした場合は、 vinted-downloader
コマンドも使用できます。
vinted-downloader "PRODUCT_URL"vinted-downloader --seller "PRODUCT_URL"vinted-downloader --all "PRODUCT_URL"
pip
ありVinted 製品のダウンロードは PyPI 上にあるため、次を実行できます。
pip3 vinted-downloader をインストールします
すべての依存関係は自動的にインストールされます。
次に、次のようにvinted-downloader
コマンドを使用できます。
vinted-downloader [--seller] [-o DIR] [--all] "PRODUCT_URL"
または、Python を使用したい場合は次のようにします。
python3 -m vinted_downloader [--seller] [-o DIR] [--all] "PRODUCT_URL"
パッケージを更新するには、次を実行します。
pip3 インストール --upgrade vinted-downloader
まず、Python をインストールする必要があります。
https://www.python.org/downloads/ に移動します
インストーラー「Python for 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 の場合:
# clone:git clone https://github.com/boberle/vinted-downloader.git# install deps:cd vinted-downloader python3 -m venv venvsource venv/bin/activate pip install -rrequirements.txt# use:python3 vinted_downloader.py "PRODUCT_URL"
すべてのアイテム情報は、HTML ファイルと一緒にダウンロードされた JSON ファイルに含まれています。製品 ID はアイテムの URL: https://www.vinted.TLD/items/ITEM_ID-slug
にあります。
アイテム ID を取得したら、 https://www.vinted.TLD/api/v2/items/ITEM_ID?localize=false
で JSON ファイルをダウンロードするだけです。
たとえば、curl を使用してダウンロードすると、「不正」エラーが発生します。まず HTML ページ (たとえば、製品ページと同じ TLD を持つ vinted ホームページ) に接続して認証 Cookie (匿名認証であっても) を取得し、それを再利用する必要があります。これが、以下の bash スクリプトが 2 つの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=`エコー "$url" | grep -oP "(?<=/)d+(?=-)"`curl -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Accept-Encoding: gzip、deflate、 br" -H "Accept-Language: fr-FR,fr;q=0.5" -H "Connection: keep-alive" -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」カール -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" -H "Accept-Encoding: gzip、deflate、 br" -H "Accept-Language: fr-FR,fr;q=0.5" -H "Connection: keep-alive" -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 in `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 "秒フェッチ モード: ナビゲート" -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 との下位互換性はありません。