指定したHP上にあるリンクの貼られた画像をダウンロードするスクリプト。
画像上はサムネイル表示で、大きい画像へのリンクが貼られている場合があります。それをいちいちクリックして取り出すのが面倒なのでさくさくっと作成。
朝っぱらから、こんな物を作ってたので、頭が慣れていたせいか所要時間は30分程度。
使い方は簡単で、スクリプトの引数にURLを指定して実行すると、勝手にダウンロードします。
#!/usr/bin/env python2.5 # # $Id: save_image.py 48 2008-11-07 12:42:49Z yasui $ import getopt import sys,os,re import urllib2 _REV = "$Id: save_image.py 48 2008-11-07 12:42:49Z yasui $" _CLIENT = 'Mozilla/5.0' _BASE_PATH = './' _VERBOSE = True def _getOpener(): opener = urllib2.build_opener() opener.addheaders = [('User-agent', _CLIENT)] return opener def saveFromURL(url): opener = _getOpener() f = os.path.basename(url) if _VERBOSE: print "save as %s for %s/%s" % (url, _BASE_PATH, f) fp = open(_BASE_PATH+'/'+f,'w') fp.write(opener.open(url).read()) fp.close() def getImageFromURL(url): a_tag_re = re.compile(r'<[aA][^hH]+[hH][rR][eE][fF]=[\'"]([^\'"]+)[\'"]') img_re = re.compile(r'.+([jJ][pP][eE]?[gG]|[pP][nN][gG])$') str = _getOpener().open(url).read() for image_url in [e for e in a_tag_re.findall(str) if img_re.match(e)]: saveFromURL(image_url) if __name__ == '__main__': usage = """usage: %s [hq] [-p save_directory] url -h show this. -q Quiet. Default is verbose. -d save directory path. Default is './' url These are image in homepage. Version: %s """ % (sys.argv[0], _REV) optlist,urllist = getopt.getopt(sys.argv[1:],'hqp:') if not urllist: print usage sys.exit(1) for opt,optarg in optlist: if opt == '-h': print usage sys.exit(0) elif opt == '-q': _VERBOSE = False elif opt == '-p': if not os.path.exists(optarg): print "%s is not found" % (optarg) print usage sys.exit(1) _BASE_PATH = optarg else : print "unknown option: %s" % (optarg) print usage sys.exit(1) for url in urllist: getImageFromURL(url)