ทำไมฉันไม่สามารถดาวน์โหลดภาพจาก google ด้วย python ได้


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 -> ชื่อรายการ = Apple Evaluating ... กำลังเริ่มดาวน์โหลด ...

น่าเสียดายที่ไม่สามารถดาวน์โหลดทั้ง 4 ภาพได้เพราะบางภาพไม่สามารถดาวน์โหลดได้ 0 คือทั้งหมดที่เราได้รับสำหรับตัวกรองการค้นหานี้!

ข้อผิดพลาด: 0

หมายเลขสินค้า: 1 -> ชื่อรายการ = Orange Evaluating ... กำลังเริ่มดาวน์โหลด ...

น่าเสียดายที่ไม่สามารถดาวน์โหลดทั้ง 4 ภาพได้เพราะบางภาพไม่สามารถดาวน์โหลดได้ 0 คือทั้งหมดที่เราได้รับสำหรับตัวกรองการค้นหานี้!

ข้อผิดพลาด: 0

หมายเลขสินค้า: 1 -> ชื่อรายการ = การประเมินองุ่น ... เริ่มต้นดาวน์โหลด ...

น่าเสียดายที่ไม่สามารถดาวน์โหลดทั้ง 4 ภาพได้เพราะบางภาพไม่สามารถดาวน์โหลดได้ 0 คือทั้งหมดที่เราได้รับสำหรับตัวกรองการค้นหานี้!

ข้อผิดพลาด: 0

หมายเลขสินค้า: 1 -> ชื่อรายการ = แตงโมการประเมิน ... เริ่มต้นดาวน์โหลด ...

น่าเสียดายที่ไม่สามารถดาวน์โหลดทั้ง 4 ภาพได้เพราะบางภาพไม่สามารถดาวน์โหลดได้ 0 คือทั้งหมดที่เราได้รับสำหรับตัวกรองการค้นหานี้!

ข้อผิดพลาด: 0

นี่เป็นการสร้างโฟลเดอร์ แต่ไม่มีภาพอยู่ในนั้น


1
ฉันไม่เข้าใจว่าทำไมโพสต์นี้ถึงไม่ชอบ 2 ครั้ง
Sai Krishnadas

1
ฉันมีปัญหาเดียวกัน มันใช้งานได้ดีเมื่อไม่กี่วันก่อน
Amith

คำตอบ:



0

ฉันคิดว่า Google กำลังเปลี่ยน DOM องค์ประกอบคลาส = "rg_meta notranslate" ไม่มีอยู่อีกต่อไป มันถูกเปลี่ยนเป็น 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()

ดังนั้นฉันจะเปลี่ยนพวกเขาได้อย่างไร
Sai Krishnadas

0

อันที่จริงปัญหาได้ปรากฏขึ้นเมื่อไม่นานมานี้มีปัญหา Github ที่คล้ายกันอยู่แล้ว:

น่าเสียดายที่ไม่มีวิธีแก้ปัญหาอย่างเป็นทางการในตอนนี้คุณสามารถใช้วิธีแก้ปัญหาชั่วคราวที่มีให้ในการสนทนา


-1

เหตุผลนี้ใช้ไม่ได้เพราะ google เปลี่ยนวิธีการทำทุกอย่างเพื่อให้คุณต้องมี api_key รวมอยู่ในสตริงการค้นหา เป็นผลจากแพ็คเกจนี้เช่น google-images-download ไม่ทำงานอีกต่อไปแม้ว่าคุณจะใช้เวอร์ชั่น 2.8.0 เพราะไม่มีตัวยึดตำแหน่งที่จะแทรกสตริง api_key ซึ่งคุณต้องลงทะเบียนกับ Google เพื่อรับ 2500 ดาวน์โหลดฟรีต่อวัน

หากคุณยินดีจ่าย $ 50 ต่อเดือนหรือมากกว่าในการเข้าถึงบริการจากserpapi.comวิธีหนึ่งในการทำเช่นนี้คือการใช้แพ็คเกจ pip google-search-resultsและให้ api_key ของคุณเป็นส่วนหนึ่งของ params แบบสอบถาม

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

ที่ที่คุณระบุคีย์ API ของคุณเองแล้วโทร:

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

ส่งคืนสตริง JSON พร้อมลิงก์ไปยัง URL รูปภาพทั้งหมดจากนั้นคุณเพียงดาวน์โหลดโดยตรง


ฉันจะรับรหัส API ได้จากที่ใด
Sai Krishnadas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.