web-dev-qa-db-ja.com

Pythonを使用してYandex画像の画像を逆検索します

逆画像検索の自動化に興味があります。特にYandexは、ナマズをつぶすのに最適で、Google画像よりも優れています。したがって、これを考慮してくださいPythonコード:

import requests
import webbrowser

try:
    filePath = "C:\\path\\whateverThisIs.png"
    searchUrl = 'https://yandex.ru/images/'
    multipart = {'encoded_image': (filePath, open(filePath, 'rb')), 'image_content': ''}
    response = requests.post(searchUrl, files=multipart, allow_redirects=False)
    #fetchUrl = response.headers['Location']
    print(response)
    print(dir(response))
    print(response.content)
    input()
except Exception as e:
    print(e)
    print(e.with_traceback)
    input()```

スクリプトはKeyErrorで失敗し、'location'が見つかりません。 searchUrlhttp://www.google.hr/searchbyimage/uploadに置き換えた場合、コードが機能することはわかっていますが、スクリプトは正しいURLを返します。したがって、要するに期待される結果は画像検索付きのURLになります。実際には、そのURLが格納されているはずのKeyErrorが発生します。明らかに、Yandexはまったく同じようには動作しません。URLがオフになっている(ヒープトンのバリエーションを試しましたが)か、理由がまったく異なる可能性があります。

それにもかかわらず、この問題を解決するのに役立つことは大歓迎です!

7
Platon Makovsky

開発者向けのAPIはありません。あなたはあなたのブラウザから逆の初心者のクエリを試すことができますが、あなたはロボットの保護に対処する必要があります。

プロセスをスピードアップする別の方法(ただし、まだ手動)

  1. ここで説明されているように https://yandex.com/support/images/loaded-image.html 画像検索用のホットキーがある場所にYandex.Browserをインストールします
  2. 検索クエリのすべてのソース画像を使用してサイトをホスト/作成する
  3. Yandex.Browserでサイトを開きます。「マウスの右クリック」+「yandexで画像を検索」を使用します。
  4. 結果を含むページから必要なものをコピーする