[Python]Webスクレイピング !BeautifulSoupで画像を取得・保存

BeautifulSoupで画像を取得・保存

Webスクレイピングは、特定のWebページから情報を収集するために行われる技術です。Pythonには、Webスクレイピングを行うためのライブラリがたくさんありますが、その中でもBeautifulSoupは非常に便利です。

BeautifulSoupとは何か、その特徴と利点

BeautifulSoupは、HTMLやXMLなどのマークアップ言語を解析するためのライブラリです。Webスクレイピングにおいては、Webページの構造を解析し、必要な情報を抽出するために用いられます。

BeautifulSoupの主な特徴は以下の通りです。

  • HTMLやXMLの構造を解析して、データを抽出できる。
  • Pythonのライブラリであるため、Pythonで書かれたプログラムから簡単に利用できる。
  • Webページの構造が変わっても、柔軟に対応できる。

BeautifulSoupを用いた画像取得の基本的な流れ

BeautifulSoupを用いた画像取得の基本的な流れは以下の通りです。

  1. 対象となるWebページのURLを指定する。
  2. BeautifulSoupを用いて、WebページのHTMLを取得する。
  3. HTMLから、画像のURLを抽出する。
  4. 画像のURLを用いて、画像をダウンロード・保存する。

事前準備:必要なライブラリのインストール

BeautifulSoupを用いた画像取得には、以下のライブラリが必要です。

  • requests:HTTPリクエストを送信するためのライブラリ
  • BeautifulSoup4:HTMLやXMLを解析するためのライブラリ

これらのライブラリは、pipを用いてインストールできます。

pip install requests
pip install beautifulsoup4

コード解説:BeautifulSoupでWebページから画像のURLを取得

以下のコードは、指定したWebページから画像のURLを取得するためのものです。

import requests
from bs4 import BeautifulSoup
url = 'http://example.com'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
img_tags = soup.find_all('img')
urls = [img['src'] for img in img_tags]
print(urls)

まず、requestsライブラリを用いて、指定したURLのWebページを取得しています。その後、BeautifulSoupを用いて、WebページのHTMLを解析し、imgタグを含む要素を取得しています。最後に、imgタグのsrc属性から画像のURLを抽出し、リストに格納しています。

コード解説:取得した画像URLを用いて画像をダウンロード・保存

以下のコードは、取得した画像URLを用いて画像をダウンロード・保存するためのものです。

import os
import requests
urls = ['http://example.com/image1.jpg', 'http://example.com/image2.jpg']
for url in urls:
    res = requests.get(url)
    with open(os.path.basename(url), 'wb') as f:
        f.write(res.content)

urlsリストには、先程取得した画像のURLが格納されています。forループを用いて、各画像のURLに対して、requestsライブラリを用いて画像をダウンロードし、ファイルに保存しています。

ここでは、ファイル名には画像のURLの末尾にあるファイル名を使用しています。例えば、http://example.com/image1.jpgの場合、ファイル名はimage1.jpgとなります。

注意点とトラブルシューティング:エラーへの対処法や注意すべきポイント

BeautifulSoupを用いた画像取得において、注意すべきポイントやトラブルシューティングの方法をいくつか紹介します。

  • HTTPエラーが発生した場合には、requestsライブラリのstatus_code属性を確認することで、エラーの原因を特定できます。
  • 画像が存在しない場合や、URLが不正な場合には、requestsライブラリのraise_for_status()メソッドでエラーを発生させることができます。
  • 画像のURLには、必ずしもhttp://やhttps://が含まれているわけではないため、必要に応じてURLを加工する必要があります。

まとめ

PythonのBeautifulSoupを用いることで、Webページから画像を簡単に取得・保存することができます。必要なライブラリのインストールや、コードの解説、注意点について説明しました。Webスクレイピングにおいては、適切な利用方法を心がけ、法律や倫理に反するようなことを行わないようにしましょう。