2012-06-28 11 views
8

Sto attraversando un periodo molto difficile per la ricerca di immagini su google con python. Ho bisogno di farlo usando solo le librerie standard Python (quindi urllib, urllib2, json, ..)python search con immagini google immagini

Qualcuno può aiutare? Supponiamo che l'immagine sia jpeg.jpg e si trovi nella stessa cartella in cui sto eseguendo python.

Ho provato un centinaio di versioni di codici differenti, utilizzando le intestazioni, user-agent, codifica Base64, URL diversi (images.google.com, http://images.google.com/searchbyimage?hl=en&biw=1060&bih=766&gbv=2&site=search&image_url= {{url all'immagine}} & sa = X & ei = H6RaTtb5JcTeiALlmPi2CQ & ved = 0CDsQ9Q8, ecc ....)

Niente funziona, è sempre un errore, 404, 401 o tubo rotto :(

vi prego di mostrare un po 'script python che effettivamente seach google immagini con la mia immagine come i dati di ricerca ('jpeg.jpg' memorizzati sul mio computer/dispositivo)

Grazie per chiunque in grado di risolvere questo,

Dave :)

+0

Probabilmente non è così sorprendente che Google è meglio che ti impedisce di raschiare loro pagine di te stanno aggirando la loro protezione. – geoffspear

+0

No, è più che non capisco urllib2. Se eseguo una ricerca tramite browser o tramite python tramite il mio telefono Android, a volte posso pubblicare senza errori, ma ottenere il risultato che non riesco a capire. Ho studiato urllib2 da giorni e sembra tutto finito, ci sono mimetipi, intestazioni, diverse varietà di urllib .. poi c'è la ricetta modificata ... e ancora nessun manuale su come usare urllib, o urllib2, correttamente . Ci sono molti post online ... ma ognuno è diverso. per esempio, ecco uno che pubblica su google translate: – user1488252

+0

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

risposta

2

Io uso il seguente codice in Python per la ricerca di immagini di Google e scaricare le immagini sul computer:

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) 

Puoi anche trovare informazioni utili here.

+1

i dati potrebbero essere Nessuno a volte. – itsuper7

+8

Come è stato svitato? Non risponde affatto alla domanda dell'OP. La domanda era "Per favore mostrami qualche script python che in realtà cercherà immagini google ** con la mia immagine come i dati di ricerca ('jpeg.jpg' memorizzati sul mio computer/dispositivo) **". – Natsukane

+2

Anche come nota, il salvataggio di immagini da una ricerca di google utilizzando la loro API è una violazione diretta dei loro termini e servizi presentati [qui] (https://developers.google.com/image-search/terms) –

1

Il Google Image Search API è deprecato, usiamo Google Search per scaricare le immagini utilizzando espressioni regolari e bella zuppa

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() 
Problemi correlati