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

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

【问题讨论】:

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

标签: python automation google-image-search


【解决方案1】:

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

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

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

【讨论】:

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

这很烦人,以至于我想我应该对“脚本谷歌图像搜索”的第一个与 python 相关的 stackoverflow 结果发表评论。所有这一切中最烦人的部分是在 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 它已被弃用,但似乎可以工作。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2013-11-07
    相关资源
    最近更新 更多