简体   繁体   English

使用谷歌自定义搜索API下载图像

[英]download images with google custom search api

I have used google image api in python to download 20 first image result with the following code: 我在python中使用google image api下载20个第一个图像结果,代码如下:

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. 我知道我应该注册以获得APIKey但我没有找到任何简单的例子作为我发布的代码。 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? 显然有限制免费api,每天100个请求,这是正确的吗?

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

You can use this Google APIs Client Library for Python. 您可以将此Google API客户端库用于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: 是的, Free版有限制,您可以从Google开发者控制台进行监控

这里

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. 转到自定义搜索引擎 ,然后选择自定义搜索引擎 ,然后在“ 基本”选项卡中,将“ Image search选项设置为“ ON ,对于Sites to search部分,选择“ Search the entire web but emphasize included site选项。

Links: 链接:

I have search api for downloading images to create data set of images may be you should have a look at these ! 我有搜索api下载图像来创建数据集的图像可能你应该看看这些!

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

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

From documentation i like the 2nd one to perfect ! 从文档我喜欢第二个到完美!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM