【Python】スクレイピングで特定URL内の画像を丸ごと収集

information 728x440 - 【Python】スクレイピングで特定URL内の画像を丸ごと収集

今回、作成するプログラムはPythonによるWebスクレイピング〜画像丸ごと編〜です。
下記に特定の画像情報がわかるURLから取得する方法をリンクとして貼っておきます。

【初心者のためのPython入門】Webスクレイピング〜画像データのダウンロード

 

上記のものはかなり局所的なプログラムですが、今回のプログラムは特定のURL内の画像を丸ごと収集するよう作成しています。

より、使いやすいプログラムでかつ大量のデータを瞬時に取得できることを目的として記述しました。
参考にするもよし、コピってすぐに利用するのもよしです。お役に立てれれば幸いです。

 

プログラムの流れについて

 

今回、作成したプログラムの各処理の流れを記載します。

■ 各処理の流れ
1. 各モジュールをインポート
2. 解析したURLとリスト用変数を準備
3. BeautifulSoupにてURLを解析
4. for文にてfind_all()メソッドで取得したデータをリスト用変数に格納
5. リスト用変数からimgフォルダへ格納

 

各処理の説明

 

各処理の説明の前に、必要なモジュールをインストールしておきましょう。
今回利用するものは、requests, BeautifulSoup, lxmlです。

pip install xxxxでインストールしちゃってください。

 

ここでは、利用するモジュールをインポートします。

 

ここでは、任意のURLを入力してください。(例として私のブログサイトを記載しています。)
次に、画像データを格納するためのリスト用変数を準備しておきます。

 

次に、読み込んだ特定のURLをBeautifulSoupにてlxmlパースし、soup変数に格納します。

 

ここでは、for文にてsoup変数内のデータからfind_all()メソッドを利用して、imgタグを取り出し、link変数に格納します。
ifでは、link変数内のjpgデータとpngデータにあるsrcタグを取得し、リスト用変数imagesに格納します。

 

ここでは、for文にてリスト用変数内の画像データを読み込むために、一度変数targetに格納し、requests.get()メソッドにて画像データを読み込み、変数reに格納します。注意ですが、あらかじめローカルフォルダであるimgフォルダは作成しておく必要がありますので、準備しておいてください。

そして、変数reに格納した画像データをimgフォルダ内に格納します。このとき、パス名を取得するため、保存名が長くなるのが億劫なので、パス名の一番最後(画像名に当たる部分)を保存名にするためsplit()メソッドで処理を入れています。

 

write()メソッドにて格納する画像データを書き込むわけですが、変数reに.contentを使用しないとデフォルトで拡張子が.txtになってしまうため、避けるために.contentを利用します。

最後に、print(“ok”)などでプログラムが終わった確認を付け加えてあげるのも個人的にはいいかもです。

 

★ scraping-img-1.py

 

処理結果

python 14 1 - 【Python】スクレイピングで特定URL内の画像を丸ごと収集

 

それでは!!

 

 

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

誰でも30日間で習得出来るpython学習法

 

Pythonチュートリアル公開中です。

 

ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、現在フリーランス活動中。 2019年2月から起業する予定。 自社サービス及び製品を開発し、売り上げを立てている。