#Webサーバーにあるファイルをダウンロードする
自動ダウンロードをしたいと思った時に便利なプログラムをpythonで書いてみた。urllibを使うとすごく簡単にできる。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import urllib.request
import sys
def download():
url = sys.argv[1]
title = sys.argv[2]
urllib.request.urlretrieve(url,"{0}".format(title))
if __name__ == "__main__":
download()
python download.py [url] [ファイルタイトル]
実行するとdownload.pyのファイルと同上のディレクトリにファイルが作成される。(ファイルタイトルに絶対パスを入れるとそのパス上に作成される。)
sys.argvはsysモジュールをインポートすることで使用できる。sys.argv[0]にはそのプログラムのファイル名が入り、sys.argv[1]からはターミナルでの実行の際に入れた引数が順番に代入される。いくつものファイルを自動でダウンロードしたい場合はurlの規則性を見つけるか、Beautifulsoupのようなモジュールを使ってスクレイピングを行いurlを抽出しfor文でdownload()を複数回走らせればできる。
規則性とは、「https://hogehoge/service/10-1.png」 といった画像のURLがあった場合、3-1.pngの3がカテゴリ、1が連番で並んでいるといったようなことがありえる。複数個サンプルを見てみて規則性を見つけると一括ダウンロードができたりする。(サーバー側に負担がかかるので、スクリプト内にtime.sleep(0.1)を入れる等工夫はした方がよい)
##参考
urllib
sys
Beautifulsoup