Python プログラミング

PythonでGoogleとBingから画像を取得するWEBスクレイピングツールを作った

投稿日:




いろいろあって、画像を収集するWEBスクレイピングツールを作りました。

WEBスクレイピングツール

ソース

作成物はGitHubに。

機能概要

  • Google or Bingから指定クエリで指定枚数の画像をダウンロードする
  • すでに保存済みの画像と同じものがあれば保存しない

開発環境

Windwos10 + Anaconda Python3.7 + VSCode

環境準備

Anacondaを使った場合で説明。
Anacondaはインストールして使える状態にしておいてください。

仮想環境作成

ターミナルやAnaconda Promptで以下のコマンドを実行。
仮想環境名をscrapingとした場合は以下。

色々出てきたら、yを押して作成完了。

必要なパッケージをインストール

ターミナルやAnaconda Promptで以下のコマンドを実行。

仮想環境に入れたら、以下をインストール。

ソースを配置

仮想環境を作成したら、/Anaconda3/envs/の中にディレクトリができているので、そこにファイルを追加。

ファイルの修正

import用パス

importpath.pthのパスを自分の環境に合わせて書き換え。

プロキシの設定

プロキシを使っている場合はCommonConst.pyの【PROXIES】を設定。

画像の保存ディレクトリ

変更する場合はCommonConst.pyの【DATA_DIR】を変更。
デフォルトは以下。

使い方

ターミナルやAnaconda Promptで以下のコマンドを実行。
パラメータは4つ。

  1. 実行ファイル名:SearchEngineClass.pyを指定
  2. 検索サイト:google or bingを指定
  3. 検索キーワード:画像検索で使用するキーワードを指定
  4. 取得枚数:ダウンロードする枚数を指定
実行するとこんな感じ。
検索キーワードに含まれるスペースはアンダーバーに変換されます。
googleでの検索結果

実際にダウンロードした画像

戻り値

download

ダウンロードに成功した場合、保存した画像のパスを返します。

download_error

何らかの理由でdownloadに失敗した場合、対象の画像URLを返します。
現状、画像URLの末尾が画像の拡張子じゃない場合はエラーになります。

download_skip

ダウンロードした画像がすでに保存している画像と同じものだった場合、保存済みの重複画像のパスを返します。

注意

WEBスクレイピングツールはやろうと思えば何でも取得できます。
でも法律に抵触するようなことはやっちゃダメ。

ということで、ライセンスフリーの画像のみ集めるようにしてみました。
これだと版権系の画像はほとんどヒットしないはずです。

いや、俺は嫁の画像をたくさん集めたいんだ!!

という場合は、以下をコメントアウトすればフィルターが解除されます。

もしバグってたら

コメントかTwitterで教えてください。
(直すかどうかは不明)

ソースの説明は…次回?

-Python, プログラミング
-, ,

Copyright© そんなこと猫でもできる , 2019 All Rights Reserved Powered by AFFINGER5.