【Python/beautifulsoup4】サイト内の全ての画像ファイルを自動ダウンロード

Python用Webスクレイピングモジュール「beautifulsoup4」でサイト内の全ての画像ファイルを自動ダウンロードする方法についてソースコード付きでまとめました。

サイト内画像の自動ダウンロード

PythonのWebスクレイピングモジュール「beautifulsoup4」を用いてサイト内の全ての画像ファイルを自動ダウンロードしてみました。

サンプルコード(Python3)

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import os
import sys

def download_site_imgs(url, path):
    img_urls = []

    # パス(保存先)が存在しなければ新規作成
    if not os.path.exists(path):
        os.makedirs(path)

    # htmlのパース
    soup = BeautifulSoup(requests.get(url).content,'lxml')
 
    # 画像リンクなら(拡張子がjpgなど)リストに追加
    for img_url in soup.find_all("img"):
        # imgタグのsrc要素を抽出
        src = img_url.get("src")
        #src要素に画像の拡張子が含まれていたらリストに追加
        if 'jpg' in src:
            img_urls.append(src)
        elif 'png' in src:
            img_urls.append(src)
        elif 'gif' in src:
            img_urls.append(src)

    # 画像リンク先のデータをダウンロード
    for img_url in img_urls:
        re = requests.get(img_url)
        print('Download:', img_url)
        with open(path + img_url.split('/')[-1], 'wb') as f: # imgフォルダに格納
            f.write(re.content)
 

if __name__ == '__main__':
    download_site_imgs('https://algorithm.joho.info/', 'img/')

サイトのURLを保存先のパスを指定します。

関連記事
1 【Python/BeautifulSoup4】Webスクレイピング入門【Python】Webスクレイピング入門Python入門 基本文法【Python】ネットワークプログラミング入門
関連記事