使用python从谷歌搜索中抓取图像

时间:2014-10-14 07:30:53

标签: python image web-crawler

我正在尝试在python中编写脚本,以便从谷歌搜索中抓取图像。我想跟踪图像的网址,然后将这些图像存储到我的计算机上。我找到了一个代码来做到这一点。但它只跟踪60个网址。出现超时消息后。是否可以追踪60多张图像? 我的代码:

def crawl_images(query, path):

    BASE_URL = 'https://ajax.googleapis.com/ajax/services/search/images?'\
         'v=1.0&q=' + query + '&start=%d'

    BASE_PATH = os.path.join(path, query)

    if not os.path.exists(BASE_PATH):
        os.makedirs(BASE_PATH)

    counter = 1
    urls = []
    start = 0 # Google's start query string parameter for pagination.
    while start < 60: # Google will only return a max of 56 results.
        r = requests.get(BASE_URL % start)
        for image_info in json.loads(r.text)['responseData']['results']:
            url = image_info['unescapedUrl']
            print url
            urls.append(url)
            image = urllib.URLopener()

            try:
                image.retrieve(url,"model runway/image_"+str(counter)+".jpg")   
                counter +=1
            except IOError, e:
                # Throw away some gifs...blegh.
                print 'could not save %s' % url
                continue

        print start
        start += 4 # 4 images per page.
        time.sleep(1.5)

crawl_images('model runway', '')

2 个答案:

答案 0 :(得分:3)

查看文档:{​​{3}}

您最多可以获得64个结果:

  

注意:Image Searcher最多支持8个结果页面。什么时候   结合后续请求,最多总共64个结果   可用。不可能要求超过64个结果。

另一个注意事项:您可以限制文件类型,这样您就不需要忽略GIF等。


另外请注意,请注意,此API只应用于用户操作,而不能用于自动搜索!

  

注意:Google Image Search API必须用于用户生成   搜索。任何类型的自动或批量查询都是严格的   禁止的。

答案 1 :(得分:1)

您可以试用icrawler套餐。非常容易使用。我从未遇到过要下载的图片数量的问题。