今回、作成するプログラムはPythonによるWebスクレイピング〜画像丸ごと編〜です。
下記に特定の画像情報がわかるURLから取得する方法をリンクとして貼っておきます。
【初心者のためのPython入門】Webスクレイピング〜画像データのダウンロード
上記のものはかなり局所的なプログラムですが、今回のプログラムは特定のURL内の画像を丸ごと収集するよう作成しています。
より、使いやすいプログラムでかつ大量のデータを瞬時に取得できることを目的として記述しました。
参考にするもよし、コピってすぐに利用するのもよしです。お役に立てれれば幸いです。
プログラムの流れについて
今回、作成したプログラムの各処理の流れを記載します。
■ 各処理の流れ
1. 各モジュールをインポート
2. 解析したURLとリスト用変数を準備
3. BeautifulSoupにてURLを解析
4. for文にてfind_all()メソッドで取得したデータをリスト用変数に格納
5. リスト用変数からimgフォルダへ格納
– 各処理の説明
各処理の説明の前に、必要なモジュールをインストールしておきましょう。
今回利用するものは、requests, BeautifulSoup, lxmlです。
pip install xxxxでインストールしちゃってください。
1 2 |
import requests # urlを読み込むためrequestsをインポート from bs4 import BeautifulSoup # htmlを読み込むためBeautifulSoupをインポート |
ここでは、利用するモジュールをインポートします。
1 2 |
URL = 'https://su-gi-rx.com' # URL入力 images = [] # 画像リストの配列 |
ここでは、任意のURLを入力してください。(例として私のブログサイトを記載しています。)
次に、画像データを格納するためのリスト用変数を準備しておきます。
1 |
soup = BeautifulSoup(requests.get(URL).content,'lxml') # bsでURL内を解析 |
次に、読み込んだ特定のURLをBeautifulSoupにてlxmlパースし、soup変数に格納します。
1 2 3 4 5 |
for link in soup.find_all("img"): # imgタグを取得しlinkに格納 if link.get("src").endswith(".jpg"): # imgタグ内の.jpgであるsrcタグを取得 images.append(link.get("src")) # imagesリストに格納 elif link.get("src").endswith(".png"): # imgタグ内の.pngであるsrcタグを取得 images.append(link.get("src")) # imagesリストに格納 |
ここでは、for文にてsoup変数内のデータからfind_all()メソッドを利用して、imgタグを取り出し、link変数に格納します。
ifでは、link変数内のjpgデータとpngデータにあるsrcタグを取得し、リスト用変数imagesに格納します。
1 2 3 4 |
for target in images: # imagesからtargetに入れる re = requests.get(target) with open('img/' + target.split('/')[-1], 'wb') as f: # imgフォルダに格納 f.write(re.content) # .contentにて画像データとして書き込む |
ここでは、for文にてリスト用変数内の画像データを読み込むために、一度変数targetに格納し、requests.get()メソッドにて画像データを読み込み、変数reに格納します。注意ですが、あらかじめローカルフォルダであるimgフォルダは作成しておく必要がありますので、準備しておいてください。
そして、変数reに格納した画像データをimgフォルダ内に格納します。このとき、パス名を取得するため、保存名が長くなるのが億劫なので、パス名の一番最後(画像名に当たる部分)を保存名にするためsplit()メソッドで処理を入れています。
write()メソッドにて格納する画像データを書き込むわけですが、変数reに.contentを使用しないとデフォルトで拡張子が.txtになってしまうため、避けるために.contentを利用します。
最後に、print(“ok”)などでプログラムが終わった確認を付け加えてあげるのも個人的にはいいかもです。
★ scraping-img-1.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# scraping-img-1.py import requests # urlを読み込むためrequestsをインポート from bs4 import BeautifulSoup # htmlを読み込むためBeautifulSoupをインポート URL = 'https://su-gi-rx.com' # URL入力 images = [] # 画像リストの配列 soup = BeautifulSoup(requests.get(URL).content,'lxml') # bsでURL内を解析 for link in soup.find_all("img"): # imgタグを取得しlinkに格納 if link.get("src").endswith(".jpg"): # imgタグ内の.jpgであるsrcタグを取得 images.append(link.get("src")) # imagesリストに格納 elif link.get("src").endswith(".png"): # imgタグ内の.pngであるsrcタグを取得 images.append(link.get("src")) # imagesリストに格納 for target in images: # imagesからtargetに入れる re = requests.get(target) with open('img/' + target.split('/')[-1], 'wb') as f: # imgフォルダに格納 f.write(re.content) # .contentにて画像データとして書き込む print("ok") # 確認 |
– 処理結果

それでは!!
機械学習や分析の分野に興味があり、pythonを学びたいと思っている方は是非こちらもどうぞ↓