Ich habe eine App, die im Grunde eine Datenbank von Bildern ist, die auf meiner lokalen Festplatte gespeichert sind. Manchmal muss ich eine Version mit höherer Auflösung oder die Webquelle eines Bildes finden, und Googles umgekehrte Bildsuche ist ideal dafür.
Leider bietet Google keine API dafür an, also musste ich einen Weg finden, um es manuell zu machen. Im Moment benutze ich Selenium, aber das hat offensichtlich viele Overheads. Ich hätte gerne eine einfache Lösung mit urllib2 oder etwas Ähnlichem - einen POST-Request senden, die Such-URL zurückbekommen und dann kann ich einfach diese URL an webbrowser.open(url)
übergeben, um sie in meinem bereits geöffneten Systembrowser zu laden.
Hier ist, was ich im Moment benutze:
gotUrl = QtCore.pyqtSignal(str)
filePath = "/mnt/Images/test.png"
browser = webdriver.Firefox()
browser.get('http://www.google.hr/imghp')
# Klicke auf das "Nach Bild suchen" Symbol
elem = browser.find_element_by_class_name('gsst_a')
elem.click()
# Wechsele von "Bild-URL einfügen" zu "Ein Bild hochladen"
browser.execute_script("google.qb.ti(true);return false")
# Setze den Pfad zur lokalen Datei und sende sie ab
elem = browser.find_element_by_id("qbfile")
elem.send_keys(filePath)
# Hole die resultierende URL und stelle sicher, dass sie auf Englisch angezeigt wird
browser.get(browser.current_url+"&hl=en")
try:
# Wenn es mehrere Bildgrößen gibt, möchten wir die URL für die Seite "Alle Größen"
elem = browser.find_element_by_link_text("Alle Größen")
elem.click()
gotUrl.emit(browser.current_url)
except:
gotUrl.emit(browser.current_url)
browser.quit()