Kod pomógł mi pobrać kilka zdjęć z Google. Kiedyś działało kilka dni temu, a teraz nagle łamie się kod.
Kod :
# 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()
Dziennik wyjściowy:
Nr pozycji: 1 -> Nazwa elementu = Apple Ocena ... Rozpoczęcie pobierania ...
Niestety nie można pobrać wszystkich 4, ponieważ niektórych obrazów nie można pobrać. 0 to wszystko, co mamy dla tego filtra wyszukiwania!
Błędy: 0
Nr pozycji: 1 -> Nazwa elementu = Pomarańczowa Ocena ... Rozpoczęcie pobierania ...
Niestety nie można pobrać wszystkich 4, ponieważ niektórych obrazów nie można pobrać. 0 to wszystko, co mamy dla tego filtra wyszukiwania!
Błędy: 0
Nr pozycji: 1 -> Nazwa elementu = Winogrona Ocena ... Rozpoczęcie pobierania ...
Niestety nie można pobrać wszystkich 4, ponieważ niektórych obrazów nie można pobrać. 0 to wszystko, co mamy dla tego filtra wyszukiwania!
Błędy: 0
Nr pozycji: 1 -> Nazwa przedmiotu = arbuz Ocena ... Rozpoczęcie pobierania ...
Niestety nie można pobrać wszystkich 4, ponieważ niektórych obrazów nie można pobrać. 0 to wszystko, co mamy dla tego filtra wyszukiwania!
Błędy: 0
To faktycznie tworzy folder, ale nie ma w nim obrazów.
źródło
Odpowiedzi:
Wygląda na to, że występuje problem z pakietem. Zobacz te otwarte PR: PR1 i PR2
źródło
Myślę, że Google zmienia DOM. Element class = "rg_meta notranslate" już nie istnieje. Zmienia się na class = "rg_i ..."
źródło
Rzeczywiście problem pojawił się nie tak dawno temu, istnieje już kilka podobnych problemów Github:
Niestety nie ma oficjalnego rozwiązania, na razie możesz skorzystać z tymczasowego rozwiązania, które zostało przedstawione w dyskusjach.
źródło
Powodem tego nie jest to, że Google zmieniło sposób, w jaki robią wszystko, więc teraz potrzebujesz api_key zawartego w ciągu wyszukiwania. W wyniku tych pakietów, takich jak pobieranie obrazów google, nie działają już, nawet jeśli używasz wersji 2.8.0, ponieważ nie mają one symbolu zastępczego, aby wstawić ciąg api_key, który musisz zarejestrować w Google, aby uzyskać 2500 darmowych pobrań dziennie.
Jeśli chcesz zapłacić 50 USD miesięcznie lub więcej za dostęp do usługi z serpapi.com , jednym ze sposobów jest skorzystanie z pakietu pip
google-search-results
i podanie klucza api_key jako części parametrów zapytania.gdzie sam podajesz swój klucz API, a następnie dzwonisz:
Zwraca ciąg JSON z linkiem do wszystkich adresów URL obrazu, a następnie pobierasz je bezpośrednio.
źródło