मैं अजगर से चित्र क्यों डाउनलोड नहीं कर सका?


9

कोड ने मुझे Google से छवियों का गुच्छा डाउनलोड करने में मदद की। यह कुछ दिन पहले काम करता था और अब अचानक कोड टूट जाता है।

कोड:

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

आउटपुट लॉग:

आइटम नंबर .: 1 -> आइटम का नाम = सेब का मूल्यांकन ... डाउनलोड शुरू ...

दुर्भाग्य से सभी 4 को डाउनलोड नहीं किया जा सका क्योंकि कुछ चित्र डाउनलोड करने योग्य नहीं थे। 0 हम सब इस खोज फ़िल्टर के लिए मिला है!

त्रुटियां: 0

आइटम नंबर .: 1 -> आइटम का नाम = नारंगी का मूल्यांकन ... डाउनलोड शुरू ...

दुर्भाग्य से सभी 4 को डाउनलोड नहीं किया जा सका क्योंकि कुछ चित्र डाउनलोड करने योग्य नहीं थे। 0 हम सब इस खोज फ़िल्टर के लिए मिला है!

त्रुटियां: 0

आइटम नंबर .: 1 -> आइटम का नाम = अंगूर का मूल्यांकन ... प्रारंभ डाउनलोड ...

दुर्भाग्य से सभी 4 को डाउनलोड नहीं किया जा सका क्योंकि कुछ चित्र डाउनलोड करने योग्य नहीं थे। 0 हम सब इस खोज फ़िल्टर के लिए मिला है!

त्रुटियां: 0

आइटम नंबर .: 1 -> आइटम का नाम = पानी तरबूज का मूल्यांकन ... डाउनलोड शुरू ...

दुर्भाग्य से सभी 4 को डाउनलोड नहीं किया जा सका क्योंकि कुछ चित्र डाउनलोड करने योग्य नहीं थे। 0 हम सब इस खोज फ़िल्टर के लिए मिला है!

त्रुटियां: 0

यह वास्तव में एक फ़ोल्डर बनाता है लेकिन इसमें कोई चित्र नहीं है।


1
मुझे समझ नहीं आता कि इस पोस्ट को 2 नापसंद क्यों मिले?
साईं कृष्णदास

1
मेरी भी यही समस्या है। यह कुछ दिन पहले ठीक काम करता है।
Amith

जवाबों:



0

मुझे लगता है कि Google DOM को बदल रहा है। तत्व वर्ग = "rg_meta notranslate" अब मौजूद नहीं है। इसे कक्षा में बदल दिया जाता है = "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()

तो, मैं उन्हें कैसे बदलूँ?
साईं कृष्णदास

0

वास्तव में यह मुद्दा बहुत पहले नहीं आया है, पहले से ही समान गितुब मुद्दों का एक गुच्छा है:

दुर्भाग्य से, कोई आधिकारिक समाधान नहीं है, अभी के लिए, आप अस्थायी समाधान का उपयोग कर सकते हैं जो चर्चाओं में प्रदान किया गया था।


-1

इसका कारण यह नहीं है क्योंकि Google ने अपना सब कुछ करने के तरीके को बदल दिया है ताकि अब आपको खोज स्ट्रिंग में शामिल api_key की आवश्यकता हो। इस पैकेज के परिणामस्वरूप जैसे कि google-images-download अब काम नहीं करता है भले ही आप 2.8.0 संस्करण का उपयोग करें क्योंकि उनके पास api_key स्ट्रिंग सम्मिलित करने के लिए कोई प्लेसहोल्डर नहीं है जिसे आपको प्रति दिन अपने 2500 मुफ्त डाउनलोड प्राप्त करने के लिए Google के साथ पंजीकरण करना होगा।

यदि आप serpapi.com से किसी सेवा का उपयोग करने के लिए $ 50 प्रति माह या उससे अधिक का भुगतान करने को तैयार हैं , तो इसका एक तरीका यह है कि आप पाइप पैकेज का उपयोग करें google-search-resultsऔर अपने api_key को क्वेरी पैरामेट्स के भाग के रूप में प्रदान करें।

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

जहाँ आप अपनी API कुंजी स्वयं प्रदान करते हैं और फिर कॉल करते हैं:

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

यह एक JSON स्ट्रिंग को सभी छवि url के लिंक के साथ देता है और फिर आप उन्हें सीधे डाउनलोड करते हैं।


मुझे API कुंजी कहां से मिलेगी?
साई कृष्णदास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.