#coding=utf-8
import os
import sys
import re
import urllib
URL_REG = re.compile(r'(http://[^///]+)', re.I)
IMG_REG = re .compile(r'
]*?src=([/'"])([^/1]*?)/1', re.I)
def download( dir, url):
''Web ページから画像をダウンロードします
@dir ローカルの場所へのパスを保存します
@url Web ページの URL
'''
global URL_REG, IMG_REG
m = URL_REG.match(url)
m でない場合:
print '[Error]Invalid URL: ', url
return
host = m。 group(1)
if not os.path.isdir(dir):
os.mkdir(dir)
# html を取得し、画像 URL を抽出します
html = urllib。 urlopen(url).read()
imgs = [IMG_REG.findall(html) の項目の item[1]. lower()]
f = lambda path: path if path.startswith('http:/ /') else /
ホスト + パス if path.startswith('/') else url + '/' + パス
imgs = list(set(map(f, imgs)))
print ' [情報] % d 個の画像を検索します。' % len(imgs)
# idx、img の画像をダウンロードします(imgs):
name = img.split('/')[ -1]
path = os.path.join(dir, name)
try:
print '[Info]Download(%d): %s'% (idx + 1, img)
urllib.urlretrieve( img, path)
例外:
print "[エラー]ダウンロードできません(%d): %s" % (idx + 1, img)
def main ():
if len(sys.argv) != 3:
print '引数の数が無効です。'
return
dir, url = sys.argv[1:]
download( dir, url)
if __name__ == '__main__':
# download('D://Imgs', 'http://www.163.com')
main()