2012-06-28 20 views
8

estoy teniendo un momento muy difícil buscando en la búsqueda de imágenes de google con python. Necesito hacerlo usando solo bibliotecas de Python estándar (así que urllib, urllib2, json, ...)búsqueda de Python con imagenes de google images

¿Alguien puede ayudarme? Supongamos que la imagen es jpeg.jpg y está en la misma carpeta desde la que estoy ejecutando Python.

He tratado de un centenar de versiones de código diferentes, usando encabezados, agente de usuario, codificación base64, diferentes URL (images.google.com, http://images.google.com/searchbyimage?hl=en&biw=1060&bih=766&gbv=2&site=search&image_url= {{url para su imagen}} & sa = X & ei = H6RaTtb5JcTeiALlmPi2CQ & ved = 0CDsQ9Q8, etc ....) funciona

Nada, siempre es un error, 404, 401 o tubería rota :(

Por favor, dame algo de script en Python que realmente seach Google con mi propia imagen como los datos de búsqueda ('jpeg.jpg' almacenados en mi computadora/dispositivo)

Gracias por quien puede resolver esto,

de Dave :)

+0

Es probable que no del todo sorprendente que Google es mejor en le para de raspado de sus páginas de lo que están eludiendo su protección. – geoffspear

+0

No, es más que simplemente no entiendo urllib2. Ya sea que busco por navegador, o por python a través de mi teléfono Android, puedo publicar mensajes sin errores a veces, pero obteniendo el resultado simplemente no entiendo. He estado estudiando urllib2 desde hace días y parece estar en todas partes, hay tipos miméticos, encabezados, varias variedades de urllib ... luego hay recetas alteradas ... y aún no hay ningún manual sobre cómo usar urllib, o urllib2, adecuadamente . Hay muchas publicaciones en línea ... pero cada una es diferente. por ejemplo, aquí hay uno que publica en la traducción de google: – user1488252

+0

https://bitbucket.org/vgavro/google_translate/src/19807740244a/google_translate.py – user1488252

Respuesta

2

utilizo el siguiente código en Python para buscar imágenes de Google y descargar las imágenes en el ordenador:

import os 
import sys 
import time 
from urllib import FancyURLopener 
import urllib2 
import simplejson 

# Define search term 
searchTerm = "hello world" 

# 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*4)+'&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 
     print myUrl['unescapedUrl'] 

     myopener.retrieve(myUrl['unescapedUrl'],str(count)+'.jpg') 

    # Sleep for one second to prevent IP blocking from Google 
    time.sleep(1) 

Puede también encuentra información muy útil here.

+1

los datos pueden ser Ninguno a veces. – itsuper7

+8

¿Cómo se modificó esto? No responde la pregunta del OP en absoluto. La pregunta era "Por favor muéstrame un script de Python que realmente buscará las imágenes de google ** con mi propia imagen como los datos de búsqueda ('jpeg.jpg' almacenados en mi computadora/dispositivo) **". – Natsukane

+2

También como una nota, guardar imágenes de una búsqueda en Google usando su API es una violación directa de sus términos y servicios establecidos [aquí] (https://developers.google.com/image-search/terms) –

1

está en desuso La búsqueda de imágenes Google API, utilizamos Google de búsqueda para descargar las imágenes utilizando expresiones regulares y la sopa Hermosa

from bs4 import BeautifulSoup 
import requests 
import re 
import urllib2 
import os 


def get_soup(url,header): 
    return BeautifulSoup(urllib2.urlopen(urllib2.Request(url,headers=header))) 

image_type = "Action" 
# you can change the query for the image here 
query = "Terminator 3 Movie" 
query= query.split() 
query='+'.join(query) 
url="https://www.google.co.in/searches_sm=122&source=lnms&tbm=isch&sa=X&ei=4r_cVID3NYayoQTb4ICQBA&ved=0CAgQ_AUoAQ&biw=1242&bih=619&q="+query 

print url 
header = {'User-Agent': 'Mozilla/5.0'} 
soup = get_soup(url,header) 

images = [a['src'] for a in soup.find_all("img", {"src": re.compile("gstatic.com")})] 
#print images 
for img in images: 
    raw_img = urllib2.urlopen(img).read() 
    #add the directory for your image here 
    DIR="C:\Users\hp\Pictures\\valentines\\" 
    cntr = len([i for i in os.listdir(DIR) if image_type in i]) + 1 
    print cntr 
    f = open(DIR + image_type + "_"+ str(cntr)+".jpg", 'wb') 
    f.write(raw_img) 
    f.close() 
Cuestiones relacionadas