я взял за основу данный скрипт
http://snippets.dzone.com/posts/show/1940 (качает рандомный мусор) и немного переделал его(качает что нужно)
# -*- coding: utf-8 -*-
import os
import re
import urllib.request
import urllib.parse
class googleImages(object):
def __init__(self):
self.RE_IMAGEURL = re.compile('imgurl=(http://.+?)&', re.DOTALL | re.IGNORECASE)
self.imagesURLs = []
def getImages(self, imageName=None, count=1):
"imageName - чего искать, count - сколько страниц"
imageName = urllib.parse.urlencode(dict(q=imageName))
htmlPage = ''
request = ''
count = range(0,count*20,20) # нумерация страниц для гугля
for i in count:
requestURL = 'http://images.google.ru/images?%s&hl=ru&start=%d' % (imageName,i)
requestHeaders = {'User-Agent':'Mozilla/5.0'}
request = urllib.request.Request(requestURL, None, requestHeaders)
htmlPage = urllib.request.urlopen(request).read(500000)
htmlPage=str(htmlPage)
results = self.RE_IMAGEURL.findall(htmlPage)
if len(results) > 0:
for image in results:
imageURL = urllib.parse.unquote_plus(image)
if not imageURL.startswith('http://'): imageURL = 'http://'+imageURL
self.imagesURLs += results
def imageloader(self,path,urls=None):
"path - путь куда сохранять картинки"
urllist = self.imagesURLs if urls == None else urls
filelist = []
x=0
for i in urllist:
#цикл создаёт уникальные имена файлов
filename = i.split('/')[-1]
if filename in filelist:
filelist.append(filename+"copy " + str(x))
else:
filelist.append(filename)
x+=1
print (len(filelist),"картиног")
#создаём директорию для картинок
try:
os.mkdir(path)
except WindowsError:
print("directory",path,"already exists")
c = 1
#сохраняем картинки
for i in zip(urllist,filelist):
try:
urllib.request.urlretrieve(i[0], path+'\\'+ i[1])
if c%5==0: print (c)
except:
print ("download №",c,i[0],"failed")
c += 1
if __name__ == '__main__':
img = googleImages()
img.getImages("орнамент",1)
img.imageloader("D:\image\орнамент")
print ("загрузка завершена")
Пожалуста добавте, кто может, возможность выбирать размер картинок для закачки(в гугле можно выбирать размер при поиске). А вообще любые улучшения приветствуются :)