mengapa saya tidak bisa mengunduh gambar dari google dengan python?


9

Kode membantu saya mengunduh banyak gambar dari google. Dulu bekerja beberapa hari yang lalu dan sekarang tiba-tiba kode rusak.

Kode:

# importing google_images_download module 
from google_images_download import google_images_download  

# creating object 
response = google_images_download.googleimagesdownload()  

search_queries = ['Apple', 'Orange', 'Grapes', 'water melon'] 


def downloadimages(query): 
    # keywords is the search query 
    # format is the image file format 
    # limit is the number of images to be downloaded 
    # print urs is to print the image file url 
    # size is the image size which can 
    # be specified manually ("large, medium, icon") 
    # aspect ratio denotes the height width ratio 
    # of images to download. ("tall, square, wide, panoramic") 
    arguments = {"keywords": query, 
                 "format": "jpg", 
                 "limit":4, 
                 "print_urls":True, 
                 "size": "medium", 
                 "aspect_ratio": "panoramic"} 
    try: 
        response.download(arguments) 

    # Handling File NotFound Error     
    except FileNotFoundError:  
        arguments = {"keywords": query, 
                     "format": "jpg", 
                     "limit":4, 
                     "print_urls":True,  
                     "size": "medium"} 

        # Providing arguments for the searched query 
        try: 
            # Downloading the photos based 
            # on the given arguments 
            response.download(arguments)  
        except: 
            pass

# Driver Code 
for query in search_queries: 
    downloadimages(query)  
    print()

Log keluaran:

Item no .: 1 -> Item name = Apple Evaluating ... Mulai Mengunduh ...

Sayangnya keempatnya tidak dapat diunduh karena beberapa gambar tidak dapat diunduh. Hanya 0 yang kami dapatkan untuk filter pencarian ini!

Kesalahan: 0

Item no .: 1 -> Item name = Orange Evaluating ... Mulai Mengunduh ...

Sayangnya keempatnya tidak dapat diunduh karena beberapa gambar tidak dapat diunduh. Hanya 0 yang kami dapatkan untuk filter pencarian ini!

Kesalahan: 0

Item no .: 1 -> Item name = Grapes Evaluating ... Mulai Mengunduh ...

Sayangnya keempatnya tidak dapat diunduh karena beberapa gambar tidak dapat diunduh. Hanya 0 yang kami dapatkan untuk filter pencarian ini!

Kesalahan: 0

Item no .: 1 -> Item name = water melon Mengevaluasi ... Mulai Mengunduh ...

Sayangnya keempatnya tidak dapat diunduh karena beberapa gambar tidak dapat diunduh. Hanya 0 yang kami dapatkan untuk filter pencarian ini!

Kesalahan: 0

Ini sebenarnya membuat folder tetapi tidak ada gambar di dalamnya.


1
Saya tidak mengerti mengapa posting ini mendapat 2 ketidaksukaan?
Sai Krishnadas

1
Saya juga punya masalah yang sama. Ini berfungsi dengan baik beberapa hari sebelumnya.
Amith

Jawaban:



0

Saya pikir Google mengubah DOM. Kelas elemen = "rg_meta notranslate" tidak ada lagi. Itu diubah ke class = "rg_i ..."


def get_soup(url,header):
    return BeautifulSoup(urllib2.urlopen(urllib2.Request(url,headers=header)),'html.parser')    

def main(args):
    query = "typical face"
    query = query.split()
    query = '+'.join(query)
    url = "https://www.google.co.in/search?q="+query+"&source=lnms&tbm=isch"
    headers = {}
    headers['User-Agent'] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
    soup = get_soup(url, headers)
    for a in soup.find_all("img", {"class": "rg_i"}):
        wget.download(a.attrs["data-iurl"], a.attrs["data-iid"])


if __name__ == '__main__':
    from sys import argv
    try:
        main(argv)
    except KeyboardInterrupt:
        pass
    sys.exit()

Jadi, bagaimana saya mengubahnya?
Sai Krishnadas


0

Alasan ini tidak berhasil adalah karena google mengubah cara mereka melakukan semuanya sehingga Anda sekarang memerlukan api_key yang termasuk dalam string pencarian. Akibatnya paket ini seperti unduhan google-images tidak lagi berfungsi walaupun Anda menggunakan versi 2.8.0 karena mereka tidak memiliki placeholder untuk memasukkan string api_key yang harus Anda daftarkan ke Google untuk mendapatkan 2500 unduhan gratis per hari.

Jadi cara terbaik untuk melakukan ini sekarang adalah dengan menggunakan paket pip google-search-results dan berikan api_key Anda sebagai bagian dari params permintaan.

params = {
           "engine" : "google",
           ...
           "api_key" : "secret_api_key" 
}

tempat Anda memberikan kunci API Anda sendiri dan kemudian menelepon:

client = GoogleSearchResults(params)
results = client.get_dict()

Ini mengembalikan string JSON dengan tautan ke semua url gambar dan kemudian Anda langsung mengunduhnya.


Di mana saya mendapatkan kunci API?
Sai Krishnadas
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.