Pythonを使ってウェブ上から画像を半自動ダウンロードする方法です。
2020年の9月から、ジブリのホームーページ上で原画の場面写真が一般公開されています。
え、まってジブリが全作品の場面写真無料配布始めたとか控えめにいってヤバすぎてやばいhttps://t.co/QeXTbOkQVj pic.twitter.com/qrxSmB1K03
— 横田 裕市 / 写真家 (@yokoichi777) September 18, 2020
https://www.ghibli.jp/works/chihiro/
1つ1つダウンロードするのも手ですが、それだとなかなか大変です。
URLのパターンがパターン化されていたので、プログラムを組みました。
Pipenvでまずは環境を作りましょう。
詳しくはこちら
実際のプログラムは以下です。
import requests import time import urllib.request sleep_time_sec = 2 #スリープする秒数。 last_num_str = input("枚数を入力して下さい") last_num = int(last_num_str) last_num = last_num + 1 middle_url = input("作品URLを入力して下さい") base_url = "https://www.ghibli.jp/gallery/" num_list = list(range(1,last_num)) img_format = '.jpg' for num in num_list: output = base_url + middle_url + '{0:03d}'.format(num) + img_format print(output) target = urllib.request.urlopen(output).read() file_name = middle_url + '{0:03d}'.format(num) + img_format with open(file_name, mode="wb") as f: f.write(target) time.sleep(sleep_time_sec)
https://www.ghibli.jp/works/totoro/
URLはトトロの場合
https://www.ghibli.jp/gallery/totoro001.jpg
から
https://www.ghibli.jp/gallery/totoro050.jpg
のような形で、001から050まで連番桁数で公開されているので、
「枚数」の部分では50と入力し、「作品URL」では「totoro」と入力することで、公開URLに対応しています。(枚数は公開されている画像の枚数のことです)
まぁこれでもすべての作品をダウンロードするのには1枚1枚ダウンロード画像の確認作業などを入れていくと数時間かかったんですけどね…。手動で行うと数日はかかったのではないかと思います。
何かの参考にどうぞ。
※プログラムによるデータのクローリング/スクレイピング(収集)を行う場合は、1アクセスに数秒の間隔をおき、相手のウェブサーバーに負荷をかけないようにしましょう。
※プログラムによるアクセスは個人の責任で行って下さい。
クローリング/スクレイピングは場合によっては法律に抵触する可能性があるので、robots.txtなどを確認したり、該当データのダウンロードが許可されているかを確認してから行いましょう。
参考:「スクレイピング、クローリングする時の注意点」
https://docs.pyq.jp/column/crawler.html
「クローリングとスクレイピングの違いとは?」
https://www.geekly.co.jp/column/cat-technology/1912_011/