O código me ajudou a baixar um monte de imagens do google. Costumava trabalhar alguns dias atrás e agora, de repente, o código quebra.
Código:
# 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 de saída:
Item no .: 1 -> Nome do item = Apple Avaliando ... Iniciando o Download ...
Infelizmente, todos os 4 não puderam ser baixados porque algumas imagens não estavam disponíveis para download. 0 é tudo o que temos para este filtro de pesquisa!
Erros: 0
Item no .: 1 -> Nome do item = Laranja Avaliando ... Iniciando o Download ...
Infelizmente, todos os 4 não puderam ser baixados porque algumas imagens não estavam disponíveis para download. 0 é tudo o que temos para este filtro de pesquisa!
Erros: 0
Item no .: 1 -> Nome do item = Grapes Avaliando ... Iniciando o Download ...
Infelizmente, todos os 4 não puderam ser baixados porque algumas imagens não estavam disponíveis para download. 0 é tudo o que temos para este filtro de pesquisa!
Erros: 0
Item no .: 1 -> Nome do item = melancia Avaliando ... Iniciando o Download ...
Infelizmente, todos os 4 não puderam ser baixados porque algumas imagens não estavam disponíveis para download. 0 é tudo o que temos para este filtro de pesquisa!
Erros: 0
Isso realmente cria uma pasta, mas não há imagens nela.
fonte
Respostas:
Parece que há um problema com o pacote. Veja estes PRs abertos: PR1 e PR2
fonte
Eu acho que o Google está mudando o DOM. O elemento class = "rg_meta notranslate" não existe mais. É alterado para class = "rg_i ..."
fonte
Na verdade, o problema apareceu há pouco tempo, já existem vários problemas semelhantes no Github:
Infelizmente, não há solução oficial, por enquanto, você pode usar a solução temporária fornecida nas discussões.
fonte
A razão pela qual isso não funciona é porque o Google mudou a maneira como eles fazem tudo, para que agora você precise da api_key incluída na string de pesquisa. Como resultado, pacotes como o google-images-download não funcionam mais, mesmo que você use a versão 2.8.0 porque eles não têm espaço reservado para inserir a string api_key, que você deve registrar no Google para obter 2500 downloads gratuitos por dia.
Portanto, a melhor maneira de fazer isso agora é usar o pacote pip google-search-results e fornecer sua api_key como parte dos parâmetros de consulta.
onde você mesmo fornece sua chave de API e depois chama:
Isso retorna uma sequência JSON com o link para todos os URLs da imagem e você apenas os baixa diretamente.
fonte