今回は、PythonでWebページ上の画像をすべて保存する方法を解説します。
環境はGoogle Colaboratoryです。ご自身のGoogle Driveに自動保存するようにプログラムを作成したので少しでも参考になれば幸いです。
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
実行環境
今回は「Google Colaboratory」を使います。本プログラムはローカルの環境でも実行可能ですが、モジュールのインポート、ファイルパス等適宜変更する必要があります。
スクレイピングに関して、以下の記事も参考になると思います。
参考:PythonでWebページの見出しをすべて抽出する方法!【スクレイピング】CSVファイルからの抽出方法も解説!
参考:【PyScript】HTMLファイルに書くPythonを徹底解説!ローカルサーバでWebブラウザで実行してみよう!
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import requests from bs4 import BeautifulSoup import os # 画像を保存するディレクトリのパス SAVE_DIR = "content/drive/Mydrive/images/" # 画像のURLを抽出する関数 def extract_images(url): response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") img_tags = soup.find_all("img") image_urls = [] for img_tag in img_tags: img_url = img_tag.get("src") if img_url and img_url.startswith("http"): image_urls.append(img_url) return image_urls # 画像をダウンロードする関数 def download_image(url, save_dir): response = requests.get(url) if response.status_code == 200: image_data = response.content file_name = url.split("/")[-1] save_path = os.path.join(save_dir, file_name) with open(save_path, "wb") as f: f.write(image_data) print(f"Image saved: {save_path}") # メインの処理 def main(): # 画像保存用のディレクトリを作成 os.makedirs(SAVE_DIR, exist_ok=True) # スクレイピングするURL url = "https://nano-toy-lab.com/miscellaneous-notes/excel_training/" # 画像のURLを抽出 image_urls = extract_images(url) # 画像をダウンロード for image_url in image_urls: download_image(image_url, SAVE_DIR) if __name__ == "__main__": main() |
実行すると保存される画像とそのパスが出力されます。
保存場所を指定するには、ソースコードの7行目「SAVE_DIR 」を適宜変更してください。
ローカル環境で実行する場合はコマンドプロンプト等で以下のプログラムを実行してください。
1 |
pip install requests beautifulsoup4 |
実行結果
このように、Google Colobで実行した場合、マイドライブ/imagesに保存されます。
注意点は、本文中の画像のみならず、広告なども画像として保存されることがあります。これは「img」をHTMLタグに含んでいるものをすべて抽出するプログラムとなっているためです。
まとめ
今回は、PythonでWebページ上の画像をすべて保存する方法を解説しました。
実は今回のサンプルコードはChatGPTに作成してもらい、ちょっと修正したのみのものですが、しっかりと使えるソースコードでした。
少しでも参考になれば幸いです。
無料の説明会を有効活用しよう!
独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。
それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。