web-dev-qa-db-fra.com

Recherche inverse une image dans Yandex Images en utilisant Python

Je suis intéressé par l'automatisation de la recherche d'images inversées. Yandex en particulier est idéal pour briser les poissons-chats, encore mieux que Google Images. Alors, considérez ceci Python code:

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()```

Le script échoue avec KeyError, 'location' n'est pas trouvé. Je sais que le code fonctionne car si vous remplacez searchUrl par http://www.google.hr/searchbyimage/upload alors le script renvoie l'URL correcte. Donc, en bref, le résultat attendu serait une URL avec une recherche d'image. En réalité, nous obtenons une KeyError où cette URL était censée être stockée. De toute évidence, Yandex ne fonctionne pas exactement de la même manière, peut-être que l'URL est désactivée (même si j'ai essayé une tonne de variantes) ou la raison peut être complètement différente.

Indépendamment de cela, l'aide à résoudre ce problème est très appréciée!

7
Platon Makovsky

Il n'y a pas d'API pour les développeurs. Vous pouvez essayer les requêtes de reverse inginer depuis votre navigateur, mais vous devrez faire face à anty robot protect.

Une autre façon d'accélérer le processus (mais toujours manuelle)

  1. Comme décrit ici https://yandex.com/support/images/loaded-image.html installez Yandex.Browser où vous avez un raccourci clavier pour la recherche d'images
  2. Hébergez/créez votre site avec toutes les images source pour les requêtes de recherche
  3. Ouvrez votre site dans Yandex.Browser utilisez "clic droit de la souris" + "recherche d'image sur yandex"
  4. Copiez ce dont vous avez besoin à partir de la page avec les résultats
1