我想用python下载google图片搜索的所有图片。我正在使用的代码有时似乎有问题。我的代码是
import os
import sys
import time
from urllib import FancyURLopener
import urllib2
import simplejson
# Define search term
searchTerm = "parrot"
# 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*10)+'&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
my_url = myUrl['unescapedUrl']
myopener.retrieve(myUrl['unescapedUrl'],str(count)+'.jpg')
下载了几页后,出现了如下错误:
回溯(最近一次呼叫时间):
File "C:\Python27\img_google3.py", line 37, in <module>
dataInfo = data['results']
TypeError: 'NoneType' object has no attribute '__getitem__'
怎么办??????
谷歌不赞成他们的API,抓取Google很复杂,所以我建议改用Bing API:
https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44
谷歌不是那么好,微软也不是那么邪恶
我修改了代码。现在代码可以为给定的查询下载100个图像,并且图像是完全高分辨率的,即正在下载的原始图像。
我正在使用urllib2&Beautiful soup下载图像
我希望这对你有帮助
对于Google Image Search API is deprecated,您需要使用Google Custom Search来实现您想要的目标。要获取图像,您需要执行以下操作:
这将给您4个结果,作为JSON,您需要通过递增API请求中的
startIndex
来迭代地获得结果。要获取图像,需要使用cStringIO这样的库。
例如,要访问第一个图像,需要执行以下操作:
相关问题 更多 >
编程相关推荐