我开始在项目中使用Google自定义搜索API,其目的是搜索图片,我想使用自定义搜索,因为Google图片API已被弃用。
我已经在CSE控制台上启用了图像搜索
我的查询是这样的:
其中NUMBER是1到20之间的随机值
有时,它会返回如下结果:
{u'kind': u'customsearch#result', u'title': u'Flower Wallpaper Tumblr #6790199', u'displayLink': u'7-themes.com', u'htmlTitle': u'<b>Flower</b> Wallpaper Tumblr #6790199', u'snippet': u'Flower Wallpaper Tumblr', u'htmlSnippet': u'<b>Flower</b> Wallpaper Tumblr', u'link': u'http://7-themes.com/data_images/out/7/6790199-flower-wallpaper-tumblr.jpg', u'mime': u'image/jpeg', u'image': {u'thumbnailWidth': 150, u'byteSize': 808360, u'height': 1200, u'width': 1920, u'contextLink': u'http://7-themes.com/6790199-flower-wallpaper-tumblr.html', u'thumbnailLink': u'https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSad0z_Wla0nRHAcQrjO5jLQkFjcoqnNHhejjuGmdA1AW2BqIVEpLARAk0s', u'thumbnailHeight': 94}}
突出有趣的部分:
u'link': u'http://7-themes.com/data_images/out/7/6790199-flower-wallpaper-tumblr.jpg', u'mime': u'image/jpeg'
因此,似乎网址为http://7-themes.com/data_images/out/7/6790199-flower-wallpaper-tumblr.jpg,mimetype为image / jpeg,但如果您转到该网址,您会看到它不是图片,而是HTML文档
当然,我可以将此作为例外捕获,但我不想浪费每日API请求(每天超出100个限制),因为当我明确说出时,API没有给我一个图像。
所以,问题是:这是正常的行为,还是我的错误配置/误用?如果是这样,我该怎么办呢?
感谢您的关注
答案 0 :(得分:1)
经过一些阅读后,我最好的猜测是,一些服务器正在进行资源重定向,以防止外部源直接与资源进行热链接。有问题的文件被公布为图像,但从外部服务器访问它将提供HTML文档。这不是网址重定向,因此在下载资源之前,客户端(包括Google抓取工具)不会检测到它。
这种资源重定向是使用.htaccess
文件和RewriteEngine
在Apache服务器上完成的,其技术类似于here描述的技术,尽管该特定技术不能用于诱饵和切换HTML文档的图像。
简而言之,如果服务器在说明它所托管的文件类型,Google就无法做任何事情。您可以通过在普通网络搜索界面上执行相同查询来确认这不是自定义搜索API的问题 - 请注意,单击图像会加载HTML文档而不是图像本身。