PinterestトレンドデータをスクレイピングしてEコマース調査を行う方法
Pinterestは需要シグナルの宝庫ですが、ページにJSONを残さないため、難しいターゲットの一つです。ここでは、レンダリング、ピンの選択、トレンドのフォロー、ヘッドレスモードでブロックされない方法を紹介します。
Pinterestは需要シグナルエンジンです:今保存されているものが次のシーズンに購入されるものを予測します。これにより、ピン、ボード、検索の提案は、Eコマースやコンテンツ調査に非常に役立ちます。また、多くのマーケットプレイスとは異なり、ページに構造化データを提供しないため、扱いにくいターゲットの一つでもあります。すべてが動的にレンダリングされ、正規表現で取り出せるきれいなJSONブロブはありません。つまり、最初にレンダリングしてからDOMを読み取ります。このガイドでは、レンダリングと選択の方法、トレンドとキーワードシグナルの採掘方法、ヘッドレスモードでブロックされないためのプロキシとヘッダーの選択について説明します。Pinterestの利用規約に従い、公開データに限定してください。
ここで隠れたJSONトリックが機能しない理由
多くのサイトでは、データがソース内のJavaScript変数に存在するため、単一のプレーンリクエストと正規表現で十分です。Pinterestはすべてのコンテンツをクライアントサイドで生成し、その構造をページに残しません。生のHTMLをダウンロードしても、ピンは含まれておらず、JavaScriptが実行された後に挿入されます。信頼できるアプローチは、ページをロードし、コンテンツを待ち、ライブDOMから抽出するヘッドレスブラウザ(Playwrightがよく機能します)です。ピンは深くネストされていますが、一貫してマークされています:各ピンはdata-test-id="pinWrapper"を持つdiv内にあります。これは、ハッシュ化されたクラス名よりもはるかに安定したフックです。
ピンのレンダリングと選択
最も重要な詳細:実際のデスクトップUser-Agentを設定します。ヘッドレスモードではPinterestがデフォルトの自動化UAを即座にブロックし、通常のChrome文字列を使用することで、空のリストとピンがいっぱいのページの違いになることがよくあります。検索URLをロードし、コンテンツがレンダリングされるのを少し待ってから、すべてのピンラッパーをクエリし、各ピンからタイトル、URL、サムネイルを取得します:
import asyncio, json
from playwright.async_api import async_playwright
UA = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36")
PROXY = {"server": "http://gate.quantumproxies.io:8000",
"username": "USER", "password": "PASS"}
async def scrape_pins(query):
url = f"https://www.pinterest.com/search/pins/?q={query}&rs=typed"
results = []
async with async_playwright() as p:
browser = await p.chromium.launch(proxy=PROXY)
page = await browser.new_page(user_agent=UA) # real UA is mandatory
await page.goto(url, timeout=30000)
await page.wait_for_timeout(2500) # let pins render
pins = await page.query_selector_all("div[data-test-id='pinWrapper']")
for pin in pins:
link = await pin.query_selector("a")
if not link:
continue
img = await link.query_selector("img")
results.append({
"title": await link.get_attribute("aria-label"),
"url": await link.get_attribute("href"),
"img": await img.get_attribute("src") if img else None,
})
await browser.close()
return results
pins = asyncio.run(scrape_pins("minimalist home office"))
print(len(pins), "pins")
これにより、トレンド作業に必要な要素が得られます:ピンのタイトル(ピナーが自分で書く豊富で説明的なテキスト)、目的地のURL、サムネイルです。最初のビューポート以上を取得したい場合は、選択する前にページをループでスクロールします—Pinterestは進むにつれて遅延ロードします。

ピンからトレンドシグナルへ
生のピンは最初のステップに過ぎません。研究の価値は、それらを集約して、商品化やコンテンツチームが行動できるシグナルに変えることにあります:
- キーワード拡張 — Pinterestの検索オートコンプリートは、実際に買い物客が使用するフレーズを浮き彫りにします。シード用語の提案をキャプチャして、コンテンツと製品タグの語彙を構築します。
- ボードマイニング — ボードはテーマに基づいた手作りのコレクションです。フォロワーの多いボードのピンをスクレイピングすることで、今何が一緒に保存されているかを示します。
- 説明テキストの頻度 —
aria-labelタイトルはキーワードが豊富です。検索全体で繰り返される用語をカウントすることで、ニッチを駆動する言語と美学を明らかにします。 - 季節性 — 同じ検索を毎週繰り返し、結果を比較して、ピークに達する前に上昇するテーマをキャッチします。これがPinterestを先行指標として使用する全体のポイントです。
これらのシグナルは市場を比較することで最も強力になるため、終了IPを地理的にターゲットにします:米国の買い物客に表示されるものは英国やドイツの買い物客に表示されるものとは異なり、そのギャップがしばしば機会です。各実行を国別の住宅プロキシを通じてルーティングし、市場をデータと一緒に保存します。
トレンド作業のための実用的なヒント:固定された週次のペースで同じ検索をキャプチャし、上書きせずにすべてのスナップショットを保存します。「コテージコアキッチン」のピン数は単独では意味がありませんが、8週間にわたる上昇線は真の先行指標です—Pinterestの保存は購入に先行するため、今プラットフォームで勢いを増しているテーマは次の四半期の販売シグナルです。スナップショットが一貫していれば差分は簡単です。信頼性のある収集が重要であり、クリーンなIPと安定したセレクタが役立つのはまさにそのためです。
ヘッドレスモードを維持する
Pinterestは自動化を監視しているため、データセンターIPのブラウザでロボットの指紋があるとすぐにフラグが立ちます。セッションを健康に保つための3つの習慣:一貫した実際のUser-Agent(すでにカバー済み)、セッションごとに新しい回転する住宅IPを使用して、1つのアドレスが多数の検索に結びつかないようにし、人間らしいペースで—ロード後に短い待機、穏やかなスクロール、1000リクエストのバーストはなし。JavaScriptが多用されたサイトのスクレイピングに関するガイドでは、レンダリングとプロキシの組み合わせを詳しく説明しており、同じアンチブロックの衛生は他のソーシャルプラットフォームにも適用されます—Instagramの公開データのスクレイピングを参照してください。
ブラウザフリートが価値を失うとき
すべてのページをレンダリングするのは遅くて高価です—ヘッドレスブラウザは、時間と帯域幅の両方で、単純なリクエストよりも桁違いにコストがかかります。研究規模では、それが積み重なります。Scraper APIは、オンデマンドでレンダリングし、構造化データを返すことで、ブラウザフリート、プロキシの回転、ブロック処理をスキップできるため、メンテナンスではなく分析に時間を費やすことができます。また、フォロワー数、保存数、コメント数、カテゴリ、ハッシュタグなど、迅速なDOMスクレイプでは取り残されるリッチなフィールドも引き出します。

よくある質問
PythonでPinterestをスクレイピングするにはどうすればよいですか?
PinterestはJavaScriptでコンテンツをレンダリングし、生のHTMLにはデータを残さないため、プレーンリクエストではなくPlaywrightのようなヘッドレスブラウザを使用してください。実際のデスクトップUser-Agentを設定し、検索またはボードURLをロードし、ピンがレンダリングされるのを待ち、次に各div[data-test-id="pinWrapper"]を選択し、タイトル、URL、画像を読み取ります。
Pinterestには公開APIがありますか?
Pinterestはビジネスおよび開発者アカウント向けに公式APIを提供していますが、それは限定されており、レート制限があり、ネットワーク全体の広範なトレンド調査よりも自分のコンテンツや広告の管理に焦点を当てています。ニッチや市場全体の公開ピン、ボード、検索トレンドデータのために、多くの研究者は公開ページをレンダリングします。
なぜPinterestは私のスクレイパーをブロックするのですか?
最も一般的な原因は、Pinterestが即座にブロックするデフォルトのヘッドレスUser-Agentと、多くの急速なリクエストに結びついたデータセンターIPです。両方を修正してください:通常のChrome UAを送信し、セッションごとに住宅IPを回転させ、待機とスクロールでリクエストをペースし、バーストを発生させないようにします。
Pinterestをスクレイピングすることは合法ですか?
公開されているデータを収集することは法的にグレーゾーンにあり、管轄、目的、Pinterestの利用規約に依存します。公開ピンとボードに限定し、個人データやログインの裏にあるものを避け、商業利用のためには法的助言を求めてください。これは一般的な情報であり、法的助言ではありません。
Pinterestは忍耐を報いる:ページをレンダリングし、安定したピンラッパーをターゲットにし、説明的なタイトルと検索提案をトレンドシグナルに集約し、指紋とIPをクリーンに保ちます。それを市場ごとに行うと、ほとんどの競合他社が見ていない需要の先行指標を得ることができます。