Webサイト上の画像を一括にダウンロード

Webスクレイピングのライブラリのpyqueryで画像ダウンローダを作ってみました。

from pyquery import PyQuery as pq
import urllib.request, os, sys

if len(sys.argv) != 3:
    print("Usage: python3 main.py savepath URL")
    sys.exit()

x = sys.argv[2].split("/")
server = x[0] + "//" + x[2]
num = 0
d = pq(sys.argv[2])
images = d("img").items()

for image in images:
    if image.attr("src") != None:
        if "http" in image.attr("src"):
            urllib.request.urlretrieve(image.attr("src"), sys.argv[1] + "/" + str(num) + ".png")
            num += 1
        else:
            search_path = server + image.attr("src")
            urllib.request.urlretrieve(search_path, sys.argv[1] + "/" + str(num) + ".png")
            num += 1

実際に動かしてみると

$ mkdir ~/test
$ python3 main.py ~/test https://jp.fotolia.com/Info/Images/FreePicsOfTheWeek

こんな感じにできます

f:id:carumisu:20150724115913p:plain

そういえば、Chrome拡張機能にこういうのがありましたね。