“Google 按图片搜索”的 Python 脚本

Posted

技术标签:

【中文标题】“Google 按图片搜索”的 Python 脚本【英文标题】:Python script for "Google search by image" 【发布时间】:2012-01-11 20:09:36 【问题描述】:

我检查了 Google 搜索 API,似乎他们还没有发布任何用于搜索“图像”的 API。所以,我想知道是否存在一个 python 脚本/库,通过它我可以自动执行“按图像功能搜索”。

【问题讨论】:

我猜谷歌担心会产生的资源。这将是一件很棒的事情 这个 python 脚本可能会有所帮助:bit.ly/QjIy21 【参考方案1】:

没有可用的 API,但您可以解析页面并模仿浏览器,但我不知道您需要解析多少数据,因为 google 可能会限制或阻止访问。 p>

你可以通过简单地使用 urllib 并设置正确的 headers 来模仿浏览器,但是如果你认为用 python 解析复杂的网页可能很困难,你可以直接使用像 phontomjs 这样的无头浏览器,在浏览器中它是微不足道的使用 javascript/DOM 获取正确的元素

在尝试所有这些之前请注意检查谷歌的TOS

【讨论】:

对于“google search by image”,必须将图像拖放到屏幕上。我不确定,我怎样才能使用 python 实现自动化 当您拖放图像时,浏览器会将图像文件数据发送到谷歌,您也可以从 python 中执行此操作,但可能很难自动化所有部分,因此最好的选择是使用 phantomjs路线【参考方案2】:

这很烦人,以至于我想我应该对“脚本谷歌图像搜索”的第一个与 python 相关的 *** 结果发表评论。所有这一切中最烦人的部分是在 Google 的 Web UI 中设置适当的应用程序和自定义搜索引擎 (CSE),但是一旦您有了 api 密钥和 CSE,就可以在您的环境中定义它们并执行以下操作:

#!/usr/bin/env python

# save top 10 google image search results to current directory
# https://developers.google.com/custom-search/json-api/v1/using_rest

import requests
import os
import sys
import re
import shutil

url = 'https://www.googleapis.com/customsearch/v1?key=&cx=&searchType=image&q='
apiKey = os.environ['GOOGLE_IMAGE_APIKEY']
cx = os.environ['GOOGLE_CSE_ID']
q = sys.argv[1]

i = 1
for result in requests.get(url.format(apiKey, cx, q)).json()['items']:
  link = result['link']
  image = requests.get(link, stream=True)
  if image.status_code == 200:
    m = re.search(r'[^\.]+$', link)
    filename = './-.'.format(q, i, m.group())
    with open(filename, 'wb') as f:
      image.raw.decode_content = True
      shutil.copyfileobj(image.raw, f)
    i += 1

【讨论】:

【参考方案3】:

你可以试试这个: https://developers.google.com/image-search/v1/jsondevguide#json_snippets_python 它已被弃用,但似乎可以工作。

【讨论】:

不幸的是,它不提供“按图像搜索”功能,它只支持在文本中使用搜索词。有关 JSON API 的完整文档可以在 developers.google.com/image-search/v1/devguide 找到

以上是关于“Google 按图片搜索”的 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

怎么在python脚本中调用其它的python脚本运行?

Python 如何写脚本?

在 python 脚本中检查正在运行的 python 脚本

python秒杀脚本安全吗

如何在调用 python 脚本时捕获 python 脚本的结果? [复制]

用于运行Python脚本的Powershell脚本