Python - Télécharger des Images à partir de google recherche d'Images?
Je veux télécharger toutes les Images de google recherche d'images à l'aide de python . Le code je suis à l'aide semble avoir un problème quelque fois .Mon code est
import os
import sys
import time
from urllib import FancyURLopener
import urllib2
import simplejson
# Define search term
searchTerm = "parrot"
# 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,10):
# 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='+searchTerm+'&start='+str(i*10)+'&userip=MyIP')
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
my_url = myUrl['unescapedUrl']
myopener.retrieve(myUrl['unescapedUrl'],str(count)+'.jpg')
Après le téléchargement de quelques pages, j'obtiens une erreur comme suit:
Traceback (most recent call last):
File "C:\Python27\img_google3.py", line 37, in <module>
dataInfo = data['results']
TypeError: 'NoneType' object has no attribute '__getitem__'
Quoi faire ??????
- A) Poster votre code, B) l'utilisation de Google recherche d'images par API pour le faire.
- stackoverflow.com/a/22871658/538284
- github.com/hardikvasa/google-images-download
Vous devez vous connecter pour publier un commentaire.
J'ai modifié mon code. Maintenant le code pouvez télécharger 100 images pour une requête donnée, et les images sont en haute résolution qui est original, les images sont en cours de téléchargement.
Je suis le téléchargement des images à l'aide de urllib2 & Belle soupe
j'espère que cela vous aide à
link , Type =json.loads(a.text)["ou"] ,json.loads(a.text)["ity"]
? Je suis en cours d'exécution dans une erreur lorsque vous essayez d'exécuter à partir d'jupyter portableJSONDecodeError: Expecting value: line 1 column 1 (char 0)
La La Recherche d'Images Google API est obsolète, vous devez utiliser le Recherche Personnalisée Google pour ce que vous voulez atteindre. Pour extraire les images dont vous avez besoin pour ce faire:
Cela vous donnera 4 résultats en JSON, vous avez besoin de manière itérative obtenir les résultats en incrémentant le
startIndex
dans la demande d'API.Pour obtenir les images que vous avez besoin d'utiliser une bibliothèque comme cStringIO.
Par exemple, pour accéder à la première image, vous avez besoin pour ce faire:
Google obsolète de leur API, grattage Google est compliqué, donc je dirais à l'aide de Bing API au lieu:
https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44
Google n'est pas si bon, et Microsoft n'est pas si mal
N'ai pas regardé ton code, mais c'est un exemple de solution faite avec du sélénium pour essayer d'obtenir de 400 photos à partir du terme de recherche
Ajoutant à Piees de réponse, pour le téléchargement de n'importe quel nombre d'images dans les résultats de recherche, nous avons besoin de simuler un clic sur "Afficher plus de résultats" sur le bouton, après 400 premiers résultats sont chargés.
Code complet est ici.
Vous pouvez également utiliser le Sélénium avec Python. Voici comment:
(Ce code fonctionne sur Python 2.7)
Veuillez noter que vous devez installer le Sélénium paquet avec " pip installer le sélénium et vous devez les télécharger chromedriver.exe de ici
Au contraire des autres sites de grattage techniques, le Sélénium ouvre le navigateur et télécharger les articles parce que le Sélénium a pour mission de tester plutôt que de grattage.
Je sais que cette question est vieux, mais j'ai couru à travers récemment, et aucune des réponses précédentes fonctionnent plus. J'ai donc écrit ce script pour récupérer des images à partir de google. De plein droit maintenant, il peut télécharger autant d'images que sont disponibles.
voici un lien github ainsi https://github.com/CumminUp07/imengine/blob/master/get_google_images.py
AVERTISSEMENT: EN RAISON DE PROBLÈMES DE DROITS D'AUTEUR, LES IMAGES RECUEILLIES DOIVENT ÊTRE UTILISÉES UNIQUEMENT POUR LA RECHERCHE ET L'ÉDUCATION SEULEMENT