2012-06-28 4 views
8

У меня очень трудное время поиска изображений в Google с помощью python. Мне нужно сделать это, используя только стандартные библиотеки python (так что urllib, urllib2, json, ..)python поиск с изображением google images

Может ли кто-нибудь помочь? Предположим, что изображение jpeg.jpg и находится в той же папке, с которой я запускаю python.

Я пробовал сотни различных версий кода, используя заголовки, агент пользователя, кодирование base64, разные адреса (images.google.com, http://images.google.com/searchbyimage?hl=en&biw=1060&bih=766&gbv=2&site=search&image_url= {{URL к изображению}} & са = X & е = H6RaTtb5JcTeiALlmPi2CQ & вед = 0CDsQ9Q8 и т.д ....)

Ничего не работает, это всегда ошибка, 404, 401 или сломанную трубку :(

Пожалуйста, покажите мне питон скрипт, который будет на самом деле Seach Google изображений с моим собственным изображение в виде данных поиска ('jpeg.jpg', хранящихся на моем компьютере/устройстве)

Спасибо за кого можно решить эту проблему,

Dave :)

+0

Это, вероятно, не все, что удивительно, что Google лучше при остановке вас от соскабливания их страниц, чем вы находятся в обход защиты. – geoffspear

+0

Нет, больше я просто не понимаю urllib2. Независимо от того, пользуюсь ли я браузером, или с помощью python через мой телефон Android, я могу отправлять сообщения без ошибок, но получить результат, который я просто не понимаю. Я изучаю urllib2 в течение нескольких дней, и это просто кажется повсюду, есть миметики, заголовки, несколько разновидностей urllib .. тогда есть измененный рецепт ... и все же нет руководства о том, как использовать urllib или urllib2, правильно , Там много сообщений в Интернете .. но каждый из них отличается. например, вот сообщение, которое публикует в google translate: – user1488252

+0

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

ответ

2

Я использую следующий код в Python для поиска изображений Google и загружать изображения на компьютер:

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) 

Вы можете также найти очень полезную информацию here.

+1

Данные иногда могут отсутствовать. – itsuper7

+8

Как это получилось? Он вообще не отвечает на вопрос ОП. Возник вопрос: «Пожалуйста, покажите мне какой-нибудь скрипт python, который будет фактически искать изображения Google ** с моим собственным изображением в качестве данных поиска (« jpeg.jpg », хранящихся на моем компьютере/устройстве) **». – Natsukane

+2

Также как примечание, сохранение изображений из поиска Google с использованием их API является прямым нарушением их условий и услуг, изложенных здесь (https://developers.google.com/image-search/terms) –

1

Google Image Search API является устаревшим, мы используем поиск Google, чтобы загрузить изображения с помощью Regex и красивый суп

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() 
Смежные вопросы