télécharger des images avec google custom search api
J'ai utilisé google image api en python pour télécharger les 20 première image résultat avec le code suivant:
import os
import sys
import time
from urllib import FancyURLopener
import urllib2
import simplejson
searchTerm = "Cat"
# Replace spaces ' ' in search term for '%20' in order to comply with request
searchTerm = searchTerm.replace(' ','%20')
# Start FancyURLopener with defined version
class MyOpener(FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
myopener = MyOpener()
# Set count to 0
count=0
for i in range(0,4):
# Notice that the start changes for each iteration in order to request a new set of images for each loop
url = ('https://ajax.googleapis.com/ajax/services/search/images?'+'v=1.0&q='+searchTerm7+'&start='+str(i*4)+'&userip=MyIP&imgsz=xlarge|xxlarge|huge')
print url
request = urllib2.Request(url, None, {'Referer': 'testing'})
response = urllib2.urlopen(request)
# Get results using JSON
results = simplejson.load(response)
data = results['responseData']
dataInfo = data['results']
# Iterate for each result and get unescaped url
for myUrl in dataInfo:
count = count + 1
print myUrl['unescapedUrl']
os.chdir(newpath)
myopener.retrieve(myUrl['unescapedUrl'],str(num)+'-'+str(count))
# Sleep for one second to prevent IP blocking from Google
time.sleep(3)
Mais maintenant je voudrais utiliser google recherche personnalisée de le faire, afin d'obtenir un meilleur résultat. Je comprends que je devrais vous inscrire pour obtenir un APIKey, mais je n'ai pas trouver toute simple exemple que le code que je poste. Ne quelqu'un peut aider, je suis vraiment perdu dans google documents.
Visiblement il y a restriction de la libre api, 100 demande un jour, est-ce correct?
Edit: je suis ici, rightnow, mais toujours pas de travail
import os
import sys
import time
from urllib import FancyURLopener
import urllib2
import simplejson
import cStringIO
import pprint
searchTerm="Cat"
# Start FancyURLopener with defined version
class MyOpener(FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
myopener = MyOpener()
url='https://www.googleapis.com/customsearch/v1?key=API_KEY&cx=017576662512468239146:omuauf_lfve'+'&q='+searchTerm+'&searchType=image'+'&start=0'+'&imgSize=xlarge|xxlarge|huge'
print url
request = urllib2.Request(url, None, {'Referer': 'testing'})
response = urllib2.urlopen(request)
# Get results using JSON
data = json.load(response)
pprint.PrettyPrinter(indent=4).pprint(data['items'][0])
avez-vous ce travail ? Comment faites-vous maintenant
OriginalL'auteur Paul | 2014-04-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser cette Google Api Client Bibliothèque pour Python.
Démo:
Ici est un exemple (je l'ai changer d'):
De sortie:
Oui, il y a une limitation pour
Free
édition et vous pouvez surveiller de Google developer console:Remarque:
Aller à votre Le Moteur De Recherche Personnalisé, puis sélectionnez votre le moteur de recherche personnalisé, puis dans Notions de base onglet,
ensemble
Image search
option pourON
, et pourSites to search
section, sélectionnezSearch the entire web but emphasize included site
option.Liens:
Vous pouvez utiliser urllib.urlretrieve , ici en est un exemple.
En fait, il semble que je ne peux pas obtenir res avec votre code wince j'obtiens l'erreur suivante: pour le point de res['items']: KeyError: 'items'
Vérifier
Note
section de ma réponse.Merci beaucoup. Il fonctionne!
OriginalL'auteur Omid Raha