リオラボ
icon

⑥Pythonスクレイピングで画像を一括ダウンロードする方法を解説

このブログではPythonを使ったスクレイピングを、初心者向けにサンプルコード付きで解説しています。以下に紹介する記事では、①から⑨のステップでスクレイピングの方法を学び、実践に役立てられるよう体系的にまとめています。

【①〜⑨まとめ】PythonでWebスクレイピングを実践する方法【サンプルコード付き】

【①〜⑨まとめ】PythonでWebスクレイピングを実践する方法【サンプルコード付き】

Posted on 9月 29, 2024 | Category: Python

このブログではPythonスクレイピングを初心者向けに解説していきます。順番に各記事で解説しており入門者向けです。サンプルコード付きで解説するので実践的…


スクレイピングする際、テキストデータだけではなく画像データを取得したい場合もあるかと思います。
この記事では画像を一括取得し、ローカルに自動ダウンロードする方法を紹介しています。

以下で解説する関数を利用することで、ローカルに画像をまとめてダウンロードすることができます。

サンプルコード全文

 

以下でコードを解説していきます。

必要なライブラリのインポート

 

urljoin: 相対URLを絶対URLに変換するための関数。
os: ファイルやディレクトリの操作を行うためのライブラリ。

 

基本設定

ダウンロード先のフォルダ名やパス、画像のベースURLを設定します。

 

フォルダ名やパスには任意のものを設定してください。

base_url ですが、スクレイピング時に取得するimg srcが相対パスであれば、このbase_urlを設定します。

絶対パスの場合、base_urlにはNoneを設定します。

 

画像ダウンロード関数

 

 

・フォルダ作成: 指定されたフォルダが存在しない場合は作成します。画像の名前には、image_1,image_2のように連番を振ります。
・画像のダウンロード: 画像のURLがHTTPまたはHTTPSで始まる場合、リクエストを送信し画像データを取得します。サイズが閾値以上の場合にのみ保存します。

ここではmin_image_size_bytesを使い、不要な画像のダウンロードを防いでいます。ウェブサイトにはアイコンなど小さい画像が複数あり、それらは不要だったりします。ここでは1キロバイト以下の画像は除外するようにしています。必要に応じて調整してください。

 

ウェブページからのコンテンツ取得

get_contents_from_link関数は、指定したURLからコンテンツを取得し、画像のURLを抽出します。

 

・ウェブページの取得: 指定したリンクからHTMLコンテンツを取得します。
・画像URLの抽出: <img>要素から画像URLを収集し、重複を排除します。

ここでは.removeを使って、不要な画像を除去しています。もし不要な画像がクラス名で特定できる場合、target_elementsに指定することで削除できます。

なおここでは、取得した画像が格納されるフォルダ名には以下のようにtitle要素を指定しています。

 

このように、タイトルや見出しなどを指定することはできるのですが、例えば\ (バックスラッシュ)や: (コロン)などファイル名に使用できない文字列が要素に含まれている可能性があります。

以下の記事ではファイル名に適さない文字列を削除する関数について解説しています。

⑦ Pythonでファイル名に適さない文字を一括削除・置換する方法を解説【サンプルコード】

⑦ Pythonでファイル名に適さない文字を一括削除・置換する方法を解説【サンプルコード】

Posted on 9月 29, 2024 | Category: Python

このブログではPythonを使ったスクレイピングを、初心者向けにサンプルコード付きで解説しています。以下に紹介する記事では、①から⑨のステップでスクレイピ…

関数の実行

 

これで画像をダウンロードできます。

まとめ

今回紹介した画像ダウンロード関数を使用することで、ページ内にある全てのimg要素を取得することができます。また、アイコンなどの小さい画像を除外し、不要な画像を指定して削除する機能も付けています。

今回は単一のページをスクレイピングしていますが、複数のページに渡ってまとめてスクレイピングすることもできます。詳しくは以下の記事を参照ください。

④Pythonで複数ページをまとめてスクレイピングする方法を解説【サンプルコード】

④Pythonで複数ページをまとめてスクレイピングする方法を解説【サンプルコード】

Posted on 9月 28, 2024 | Category: Python

このブログではPythonを使ったスクレイピングを、初心者向けにサンプルコード付きで解説しています。以下に紹介する記事では、①から⑨のステップでスクレイピ…