download images with google custom search api

自作多情 提交于 2019-11-27 15:21:32

问题


I have used google image api in python to download 20 first image result with the following code:

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)

But now i would like to use google custom search to do that, in order to get better result. I have understand that i should register to get a APIKey but i did'nt find any simple example as the code i post. Does some one can help, i am really lost in the google documentation.

Visibly there is restriction for the free api, 100 request a day, is that correct?

Edit: I am here rightnow, but still not work

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]) 

回答1:


You can use this Google APIs Client Library for Python.

Demo:

Here is a sample (i change it to):

from apiclient.discovery import build

service = build("customsearch", "v1",
               developerKey="** your developer key **")

res = service.cse().list(
    q='butterfly',
    cx=' ** your cx **',
    searchType='image',
    num=3,
    imgType='clipart',
    fileType='png',
    safe= 'off'
).execute()

if not 'items' in res:
    print 'No result !!\nres is: {}'.format(res)
else:
    for item in res['items']:
        print('{}:\n\t{}'.format(item['title'], item['link']))

Output:

Clipart - Butterfly:
        http://openclipart.org/image/800px/svg_to_png/3965/jonata_Butterfly.png
Animal, Butterfly, Insect, Nature - Free image - 158831:
        http://pixabay.com/static/uploads/photo/2013/07/13/11/51/animal-158831_640.png
Clipart - Monarch Butterfly:
        http://openclipart.org/image/800px/svg_to_png/110023/Monarch_Butterfly_by_Merlin2525.png

Yes, there is a limitation for Free edition and you can monitor it from Google developer console:

Note:

Go to your Custom Search Engine, then select your custom search engine, then in Basics tab, set Image search option to ON, and for Sites to search section, select Search the entire web but emphasize included site option.

Links:

  • https://google-api-client-libraries.appspot.com/documentation/customsearch/v1/python/latest/customsearch_v1.cse.html
  • https://developers.google.com/custom-search/json-api/v1/reference/cse/list
  • https://www.google.com/cse/all
  • https://developers.google.com/api-client-library/python/apis/customsearch/v1
  • https://console.developers.google.com/project
  • https://developers.google.com/api-client-library/python/start/get_started
  • https://developers.google.com/api-client-library/python/guide/aaa_apikeys



回答2:


I have search api for downloading images to create data set of images may be you should have a look at these !

  1. https://rapidapi.com/contextualwebsearch/api/web-search?endpoint=5b864ca4e4b085e3f407ecca

  2. https://github.com/hardikvasa/webb/blob/master/docs/Documentation.md

From documentation i like the 2nd one to perfect !



来源:https://stackoverflow.com/questions/22866579/download-images-with-google-custom-search-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!