Mam aplikację, która jest w zasadzie bazą danych obrazów przechowywanych na dysku lokalnym. Czasami muszę znaleźć wersję w wyższej rozdzielczości lub internetowe źródło obrazu, a Google reverse image search jest do tego idealny.Wyszukiwanie w odwrotnym obrazie Google przy użyciu żądania POST
Niestety, Google nie ma dla niego API, więc musiałem wymyślić sposób na zrobienie tego ręcznie. Teraz używam Selenium, ale to oczywiście ma dużo na głowie. Chciałbym użyć prostego rozwiązania przy użyciu urllib2 lub czegoś podobnego - wyślij żądanie POST, uzyskaj adres URL wyszukiwania, a następnie mogę po prostu przekazać ten URL do webbrowser.open(url)
, aby załadować go w mojej już otwartej przeglądarce systemowej.
Oto co używam teraz:
gotUrl = QtCore.pyqtSignal(str)
filePath = "/mnt/Images/test.png"
browser = webdriver.Firefox()
browser.get('http://www.google.hr/imghp')
# Click "Search by image" icon
elem = browser.find_element_by_class_name('gsst_a')
elem.click()
# Switch from "Paste image URL" to "Upload an image"
browser.execute_script("google.qb.ti(true);return false")
# Set the path of the local file and submit
elem = browser.find_element_by_id("qbfile")
elem.send_keys(filePath)
# Get the resulting URL and make sure it's displayed in English
browser.get(browser.current_url+"&hl=en")
try:
# If there are multiple image sizes, we want the URL for the "All sizes" page
elem = browser.find_element_by_link_text("All sizes")
elem.click()
gotUrl.emit(browser.current_url)
except:
gotUrl.emit(browser.current_url)
browser.quit()
Jeśli jesteś komercyjny, TinEye jest dobrym rozwiązaniem. Jeśli możesz je przesłać w dowolnym miejscu, przydatny będzie URL "www.google.com/searchbyimage? Image_url = IMAGE_URL". – Others