見出し画像

Python初心者 無料で学習を極める(12)

おはようございます!前回は、「もののけ姫」を用いて、ジブリ様より提供して頂いた画像をすべてダウンロードができましたね。pythonすげー。と感じた瞬間でもありましたね。

今回は、他のジブリ作品の傾向も確認し、他の画像も入手することを考えましょう。それでは本日も宜しくお願い致します!

目的を持つ

最終的には画像を用いて下記の仮説について定量評価ができればと思っています。

ジブリの中で好きな画像の傾向が多い映画はどれか。

何とも、素人の仮説で笑ってしまいますが、まずは自分なりに想うところがあるのです。というのも、子供にたくさんのジブリの映画を見せているモノの、私の頭の中に残っている映像は、結構傾向が偏っている様に思いました。そこで、それを実際に定量評価し、「●●の映画は●●%で私好きみたい」という結果を算出してみたいと思います!いやー。そこまで行くのが長そうですが、、、お付き合いください。笑。

「ハウルの動く城」と「風立ちぬ」へ挑戦

今回は、二つの映画に対して画像を入手する事を考えていきたいと思います。前回の記事で記載した「HPの構造を理解する」ことで、それぞれの構成を考え、「HPの傾向を理解する」ことを行いましょう。その結果、下記の事が分かりました。

ハウルの動く城

URL     : https://www.ghibli.jp/gallery/howl001.jpg
画像サイズ: 1920 x 1038
総画像枚数:50 枚

風立ちぬ

URL   :https://www.ghibli.jp/gallery/kazetachinu001.jpg
画像サイズ:1920 x 1038
総画像枚数:50 枚

ここで二つの内容を比較すると、共通点が見えてきますね。下記の事が見えてきました。

1)URLのgallery/XXXX001.jpg とxxxxの部分が異なるのみ
2)画像サイズは同じ
3)画像枚数が同じ

これが見えた事により前回作成したコードを少し変更するのみで、いける気がしてきました!!!!

準備1:異なる部分をまとめて生成

異なる部分はURLと言う事が分かりましたね。ではその部分のみを変更したURLが生成できないか。検討しました。下記が前回の「もののけ姫」の時のコードです。

for num in range(1,6):
  url="https://www.ghibli.jp/gallery/mononoke{}.jpg".format(str(num).zfill(3))
  print(url)
  time.sleep(1)

これから、「mononoke」の部分を可変的に変更するために下記のコードを考えました。

names=["howl","kazetachinu"]
for name in names:
   for num in range(1,6):
       url="https://www.ghibli.jp/gallery/{}{}.jpg".format(name,str(num).zfill(3))
       print(url)
       time.sleep(1)
#出力結果
https://www.ghibli.jp/gallery/howl001.jpg
https://www.ghibli.jp/gallery/howl002.jpg
https://www.ghibli.jp/gallery/howl003.jpg
https://www.ghibli.jp/gallery/howl004.jpg
https://www.ghibli.jp/gallery/howl005.jpg
https://www.ghibli.jp/gallery/kazetachinu001.jpg
https://www.ghibli.jp/gallery/kazetachinu002.jpg
https://www.ghibli.jp/gallery/kazetachinu003.jpg
https://www.ghibli.jp/gallery/kazetachinu004.jpg
https://www.ghibli.jp/gallery/kazetachinu005.jpg

それっぽく出来ていますね。笑。成長している感を感じますねー。嬉しい!

準備2:タイトル毎に保存フォルダを生成

これから画像が増えていくと、画像数がすごい事になることも懸念があり、使用する元画像という意味でフォルダを生成し、そこに保存する形を取りたいと思います。

フォルダを作成する為には、OSモジュールのmkdir関数を用いる事が簡単な様です。一度それを用いて作成をしてみましょう。

# osモジュールをインポート
import os
#osモジュールを使用してディレクトリを作成
#現在の実行コードと同じディレクトリに「original_photo」フォルダを作成
path = "./original_photo"
os.mkdir(path)

その結果、、

フォルダ作成画面

できていますねーーー。嬉しい!これで、保存先が決まりましたので、前準備はできたと思います!それでは本番です!

本番!二つの映画の画像100枚を一気保存

ここでサイトの傾向も確認でき、保存先を統一することができました。傾向も合わせて下記のコードを書き上げることができました。
一つ注意が、フォルダは新規作成としているため、再度同じ名前のフォルダを作成するとエラーが返ってきます。対策は色々とあるみたいですが、今回は無視します。笑。無視というのが、「最初からフォルダが無い状態」からコードを実行するとします。宜しくお願い致します!

#入手する映画の名前を一つにまとめる
names=["howl","kazetachinu"]
#保存した画像の場所を固定する
path = "./original_photo"
os.mkdir(path)
#入手した映画名に合わせてforループ
for name in names:
   #画像の枚数に合わせてforループ
   for i in range(1,51):
       print("{}の{}枚目作成中".format(name,i))
       url = "https://www.ghibli.jp/gallery/{}{}.jpg".format(name,str(i).zfill(3))
       file_name = "original_photo/{}{}.jpg".format(name,str(i).zfill(3))
       time.sleep(1)
       response = requests.get(url)
       image = response.content

       with open(file_name, "wb") as files:
           files.write(image)
           print("{}の{}枚目完成".format(name,i))

その結果・・・

ハウルと風立ちぬ_1

できていますね!うれしい限りです☆しっかりと、指定フォルダの中に画像を保存してくれていました。素晴らしい!
これで二つの映画の画像を入手することができましたので、それ以外の映画の画像も保存する事も簡単そうですね。(namesの所を増やすだけで・・)

次回は、

私の好みの画像シーンにフラグを付け、傾向を記録してみましょう!

にトライします。それではまた!


よろしければサポート頂けると幸いです!子供へのパパ時間提供の御礼(お菓子)に活用させて頂きます☆