取得したURLが相対バスか絶対パスかを判定して、相対パスなら絶対パスにするという作業は今回はせずに、
取得したいサイトではimgのパスは絶対パスだけを利用していることを条件に作成したプログラムなので相対パスを使っているサイトから画像を取得しようとするとERRORになるので気をつけてください。
コードの詳しい説明(?)は下記にリンクを貼ってあるブログの方に書き留める予定です。(ブログ公開終了しました)
(2014.08.11現在の予定)
downloadImg.py
# -*- coding: utf-8 -*-
import urllib
import urllib2
import os.path
import sys
from HTMLParser import HTMLParser
def download(url):
img = urllib.urlopen(url)
localfile = open(os.path.basename(url),'wb')
localfile.write(img.read())
img.close()
localfile.close()
class imgParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
def handle_starttag(self,tagname,attribute):
if tagname.lower() == "img":
for i in attribute:
if i[0].lower() == "src":
img_url=i[1]
# 取得した写真のURLを集めたファイルの作成
f = open("collection_url.txt","a")
f.write("%s\t"%img_url)
f.close()
if __name__ == "__main__":
print('写真を取得したいサイトのURLを入力してください。')
input_url = raw_input('>>> ')
serch_url = input_url
htmldata = urllib2.urlopen(serch_url)
print('現在画像ファイルを取得中です...')
parser = imgParser()
parser.feed(htmldata.read())
parser.close()
htmldata.close()
# 生成したファイルの読み込み
f = open("collection_url.txt","r")
for row in f:
row_url = row.split('\t')
len_url = len(row_url)
f.close()
number_url = []
for i in range(0,(len_url-1)):
number_url.append(row_url[i])
for j in range(0,(len_url-1)):
url = number_url[j]
download(url)
print('画像のダウンロードが終了しました。')
# ファイルの削除
os.remove("collection_url.txt")
Twitter :@fantmsite
ブログ:FantmSite-BLOG