Google Search APIを使用したGoogle Images:実用ガイド
Expert Network Defense Engineer
TL;DR:
tbm=ischを使用した画像検索発見のためにGoogle Search APIを利用してください。 リクエストは、Web検索と同じ認証済みエンドポイントとscraper.google.searchアクターを使用します。- エクスポーターを設計する前に画像データを検査してください。 この例では、完全なレスポンスを保存し、未確認の画像結果スキーマを仮定することなくその構造を印刷します。
- 検索の可視性と画像の再利用は別々です。 検索結果は画像を見つけるのに役立ちますが、ソースページとライセンスがそれを使用するための次のステップを決定します。
画像検索ワークフローは発見から始まります:クエリの候補画像を見つけ、ソースを検査し、どのレコードが研究データセットに含まれるべきかを決定します。役立つ統合は、ファイルを即座にダウンロードし、それらを説明するページを失うのではなく、そのトレイルを保持します。
このガイドでは、Scrapeless Google Search API内のGoogle Images APIシナリオを使用しています。リクエスト設定、完全なPythonキャプチャスクリプト、返されたデータを画像カタログに変換する前に必要なチェックをカバーしています。Web結果フィールドマップが画像結果をも説明するとは仮定していません。
What You Can Do With Image Search Data
画像検索は、視覚的研究、コンテンツの発見、および公開ソース全体でトピックがどのように表示されるかのレビューをサポートできます。たとえば、建築研究者は特定の建物タイプを検索し、関連するソースページを特定し、画像と周囲の説明を一緒にレビューできます。
APIは、アプリケーションが検査するための検索データを提供します。自動的にアセットライブラリを作成したり、すべての画像の出所を検証したり、ファイルの再公開の許可を与えたりすることはありません。それらのステップは、発見の周りに構築するワークフローに属します。
クエリと市場コンテキストをレスポンスと共に保持してください。一つの国や言語のための視覚研究セットは、別のものとは異なる場合があります。入力レコードが無ければ、後のレビュアーはどの検索が候補画像を生成したかを判断できません。
Select Google Images With tbm=isch
POST https://api.scrapeless.com/api/v1/scraper/requestを使用し、x-api-tokenで認証し、actorをscraper.google.searchに設定します。tbm="isch"をクエリの横にあるinput内に置きます。
パラメータリファレンスは、この画像検索セレクターを文書化します。同じ入力モデルには、国のためのgl、言語のためのhl、およびロケーションコントロールが含まれています。特定の起源が必要な場合は、locationまたはuuleのいずれかを選択してください。
代わりに完全なurlを使用する場合は、他の入力パラメータは無視されます。それには、別に提供された画像セレクターも含まれます。1つの入力モードを使用し、送信する前にURL自体が意図した画像検索を表していることを確認してください。
Prerequisites for the Capture Script
Pythonを準備し、requestsをpython3 -m pip install requestsでインストールし、SCRAPELESS_API_KEYを通じてScrapeless APIキーを利用できるようにします。スクリプトは、ローカルのJSONファイルに書き込む許可も必要です。標準ライブラリモジュールは、シリアル化、タイムスタンプ、およびパスを処理します。
認証されたリクエストには、独自のアカウントキーが必要で、この記事のためにライブアカウントで実行されていません。文書化されたリクエストの形状は確認されており、完全な画像レスポンススキーマはここでは主張されていません。例をcapture_google_images.pyとして保存し、キーが構成されたときにpython3 capture_google_images.pyを実行します。
Requests HTTPクライアントがJSONリクエストを送信します。この例はキャプチャと構造検査の後に停止し、保留中のタスク結果を取得したり画像ファイルをダウンロードしたりはしません。
Capture the Full Response in Python
クエリmodern library architectureは、具体的な視覚研究の例を提供します。国、言語、結果タイプの設定を保持しながら、プロジェクトに関連するトピックに変更してください。
python
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
search_input = {"q": "modern library architecture", "gl": "us", "hl": "en", "tbm": "isch"}
response = requests.post(
"https://api.scrapeless.com/api/v1/scraper/request",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
json={"actor": "scraper.google.search", "input": search_input},
timeout=120,
)
response.raise_for_status()
payload = response.json()
received_at = datetime.now(timezone.utc).isoformat()
run_id = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%S%fZ")
output = Path(f"google-images-{run_id}.json")
output.write_text(json.dumps({
"input": search_input, "http_status": response.status_code,
"received_at": received_at, "response": payload,
}, ensure_ascii=False, indent=2), encoding="utf-8")
if response.status_code == 201:
print(f"Task pending; inspect taskId in {output}.")
elif response.status_code == 200 and isinstance(payload, dict):
print(f"Saved {output}. Top-level response fields:")
for key, value in payload.items():
print(key, type(value).__name__)
if isinstance(value, list):
print(" items:", len(value))
if value and isinstance(value[0], dict):
print(" first-item keys:", sorted(value[0]))
else:
raise ValueError(f"Unexpected response; inspect {output}.")
外部input、http_status、received_at、およびresponseキーがこのアプリケーションのレコードを形成します。これらは返されたAPIスキーマとは別です。ファイル名には、クライアント生成の識別子が含まれ、受領時間はローカルマシンに記録されます。
JSONシリアル化モジュールは完全なネストされたペイロードを保持します。ターミナル検査では、最上位のタイプと最初のアイテムキーを、最上位の配列に対してリストアップします。これは初期検査支援であり、オブジェクト内にネストされた配列は、保存されたJSONでのレビューがまだ必要です。
Scrapelessでスクレイピングを始める
Scrapelessであなたのウェブスクレイピングと自動化ワークフローをパワーアップしましょう!
今日サインアップして**$5の無料クレジット**をゲット — クレジットカードは不要です。
今すぐ Scrapeless Dashboard で無料クレジットを請求してください。
フラット化する前に画像フィールドを設定する
キャプチャステップは、推測された images_results フィールドのインデックスを故意に回避します。現在の画像エンドポイント参照には、ウェブ検索モジュールを含むレスポンス例が含まれているため、完全な画像特有のマッピングを確立していません。アカウントからの成功したレスポンスを使用して、アプリケーションが消費する配列パスとアイテムフィールドを確認してください。
最初のアイテムがすべてのレコードを表すと仮定するのではなく、返された複数のアイテムを検査してください。オプショナルな値、ネストされた値、欠落した値が存在しないのか明示的に null なのかに注意を払い、その区別をエクスポーターデザインの際に保持してください。
以下は提案されたアプリケーション列であり、主張された API フィールド名ではありません:
| アプリケーション列 | 実データから設定する内容 |
|---|---|
source_page_url |
画像を含むページに導く値 |
image_url |
提供されている場合、画像リソースを識別する値 |
preview_reference |
値がプレビュー URL、インラインデータ、または別の表現であるかどうか |
result_title |
候補結果を説明するテキスト |
observed_at |
アプリケーションの観察時間 |
ソースページと画像リソースは別々に保ってください。これらは異なる質問に答えます:一方はレビューのための文脈を提供し、もう一方は画像バイトを識別するかもしれません。プレビューは、フル画像アセットのために静かに置き換えられるべきではありません。
保留中のタスクと予期しない形状を認識する
リクエストワークフロー は、HTTP 200 をデータレスポンスとして、HTTP 201 を taskId で進行中のタスクとして定義します。スクリプトは両方を保存し、構造的検査を完了したオブジェクトレスポンスにのみ適用します。
保留中のタスクは、空の画像データセットになってはいけません。同様に、不明なモジュールを含むレスポンスは、エクスポータが空の列を作成する前に検査を促すべきです。リクエストとペイロードが一緒にレビューできるように診断記録を保持してください。
フィルターを追加したり、検索の起点を変更した場合は、収集を拡大する前に小さなレスポンスセットを比較してください。検索タイプやフィルターの変更は、どのモジュールが表示されるかに影響を与える可能性があります。したがって、正確な出力行は固定の例のテーブルによってではなく、観察によって確立されます。
画像の文脈と再利用権をレビューする
画像検索は資料を見つけるのに役立ちますが、その資料のライセンスを確立するものではありません。候補のソースページをたどり、画像をコピー、再配布、または修正する前に出版社の使用条件を確認してください。
Googleの画像ライセンスメタデータは、サポートされている画像検索体験でライセンスと取得情報を公開できます。検索に存在することだけでは、その権限が存在することを証明するものではありません。画像使用権ガイダンスは、ライセンスの詳細をソースで確認するべき理由を説明しています。
研究カタログの場合は、未レビューや確認済みの許可など、別のレビュー状態を保持し、チームが必要とするソースとレビュー証拠を用意してください。これらはアプリケーションの決定であり、API の保証ではありません。リクエストが成功したからといって、画像を再利用可能とマークすることは避けてください。
発見をレビュー可能なカタログに拡張する
レスポンスマッピングを確認した後は、小さなエクスポートを作成し、保存されたペイロードと比較してください。各ソースページが画像の参照とタイトルと同じ候補に属していることを確認してください。そして、あなたのユースケースにとって何が重複と見なされるかを決定します。
2つの結果が異なるページを通じて同じ画像を指す場合や、類似した画像の異なるバージョンを指す場合があります。URL の重複排除と視覚的類似性は異なる操作です。文書化されたルールから始め、変換を導入する前に元の参照を保持してください。
後からアプリケーションがソースページや画像ファイルを取得する場合は、そのステージを別の段階にし、それ自体の結果を持たせてください。その分離により、候補は研究記録に残ることができ、後で取得や権限レビューが完了していなくても維持されます。
結論
tbm=isch を使用して画像検索をリクエストし、レスポンスを保持し、エクスポータを作成する前にそのフィールドを確認してください。便利な画像研究ワークフローは、ソースの文脈と権限のレビューを発見と並行して保持し、各選択されたアセットにその起源への追跡可能な経路があります。
検索データワークフローを構築する準備はできましたか?
コミュニティで検索ワークフローを構築している開発者とつながりましょう: Discord · Telegram。
Google Search APIのドキュメントを使用して最初のリクエストを設定します。作業負荷を計画する際は、Scrapelessの料金を確認し、関連する背景としてPythonの検索チュートリアルを使用してください。このガイドのAPIの例は、現在のリクエストインターフェースを使用します。
FAQ
Q: Google Imagesはこの例で別のアクターですか?
いいえ。この文書化されたリクエストは、入力にscraper.google.searchおよびtbm=ischを使用しています。
Q: コードは画像ファイルをダウンロードしますか?
いいえ。それは検索データをキャプチャし、その構造を調査します。画像をダウンロードすることは別のアプリケーションステップになります。
Q: ウェブ検索のオーガニック結果のマッピングはそのまま再利用できますか?
そう考えないでください。実際の画像検索データを調査し、関連する配列のパスとアイテムフィールドを最初に確認してください。
Q: なぜ固定された画像のJSONサンプルがないのですか?
現在の参照例は、完全な画像固有のスキーマを確立していません。このガイドは、実際の出力として発明されたレスポンスを提示することなく、キャプチャワークフローを提供します。
Q: 返された画像には再利用可能なライセンスがありますか?
検索の外観は再利用権を確立しません。画像を使用する前に、ソースページと適用されるライセンスまたは許可を確認してください。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



