pythonスクレイピングでウェブサイトの画像一括ダウンロード(BeautifulSoup)

プログラム

pythonのbeautifulsoupモジュールを利用して、特定のウェブサイトに
表示されている画像のダウンロードを自動化していきたいと思います。

プログラム使用上の注意点

スクレイピングは、以下の点に注意して利用する必要があります。

  • 特定のウェブサイトに短時間で大量にリクエストを送らない。
  • 各種Webサービスの規約を順守する。
  • 著作権を守る。

それぞれについては後述します。

pythonのソースコード

早速ですが、作成したソースコードは以下です。
参考にした書籍は退屈なことはPythonにやらせよう ノンプログラマーにもできる自動化処理プログラミング [ Al Sweigart ]です。

ソースは、本サイト「氷河期世代の挑戦」からサムネイル画像を
取得するようになっています。

他のサイトで利用する場合の修正箇所は後述します。
(サムネイル画像は、タダピクから頂いたものです。
 本記事は画像の再配布を目的としたものではありません。)

事前準備

動作には以下の事前準備が必要です。

項目名内容
pythonのインストールpython3x系を利用しています。
動作確認環境は3.8.0です。
beautifulsoup4モジュールの導入次のコマンドを実行します。
pip install beautifulsoup4

プログラムの簡単な解説

基本的に同様の作りのウェブサイトであれば、以下の宣言部の値を
調整すれば動作するようになっています。

修正内容修正箇所
画像取得元
ウェブサイト
修正前:
URL = ‘https://iceagegeneration.com/page/1/
修正後:
URL = ‘[画像取得元ウェブサイトのURL]
画像検索要素
文字列
ウェブページ上で画像が設定されている
CSSセレクタ(※1)を指定します。
修正前:
IMG_SEARCH_ATTR = ‘dl[class=”clearfix”] img
修正後:
IMG_SEARCH_ATTR = ‘[画像検索要素文字列]
画像リンク
文字列
修正前:
IMG_LINK_ATTR = ‘src
修正後:
IMG_LINK_ATTR = ‘[画像リンク文字列]
ベースURL
(※2)
修正前:
BASE_URL =”
修正後:
BASE_URL =’[ベースURL]
次ページ要素
文字列
ウェブページ上で「次へ>>」リンクが設定されている
CSSセレクタ(※1)を指定します。
修正前:
NEXT_PAGE_ATTR = ‘a[class=”next page-numbers”]
修正後:
NEXT_PAGE_ATTR = ‘[次ページ要素文字列]
次ページリンク
文字列
修正前:
NEXT_LINK_ATTR = ‘href
修正後:
NEXT_LINK_ATTR = ‘[次ページリンク文字列]

(※1)
ウェブページのHTMLを解析して確認します。
HTMLの解析には、開発者ツールを利用するのが一般的です。
開発者ツールはWindowsのGoogle ChromeやInternet Explorer Edge上で、
F12キーを押すと開きます。

(※2)
画像リンクが相対パスで指定されている場合に指定します。

参考にした書籍について


退屈なことはPythonにやらせよう ノンプログラマーにもできる自動化処理プログラミング [ Al Sweigart ]

pythonの入門書として購入しました。
やりたい事やちょっとした調べものをしたいときに利用しています。

実は全文が英語のサイトで公開されているのですが、
私には英語の素養が無く、都度都度Google翻訳に頼るのも時間が掛かる為、
購入しました。

書籍内にも記載されている通り、プログラマ向けと言うよりかは、
初心者向けに記載されている内容なので躓くことなく利用が出来ています。

使用上の注意点

特定のウェブサイトに短時間で大量にリクエストを送らない

スクレイピングそのものは違法ではありませんが、
短い時間に大量にアクセスを試みた場合、サーバーに負荷をかけることになり、
場合によっては、ウェブサイトを表示しているシステムに問題が生じることがあります。

それが悪質だと判断された場合、岡崎市立中央図書館事件の様に
逮捕されることがあるかもしれません。
あくまで常識の範囲で利用するようにご注意ください。

各種Webサービスの規約を順守する

また、スクレイピングをする先のウェブサイトに、
スクレイピングによる情報収集などを禁止する規約がある場合、
その事業者から規約違反によるサービス利用の停止や損害賠償請求などを
求められる可能性があります。

著作権を守る

著作権については、あえて説明の必要はないでしょう。
スクレイピングにより得た情報に著作権がある場合、
無断の配布や加工は犯罪になる可能性があります。

コメント

タイトルとURLをコピーしました