用Python下载谷歌图片无法下载图片

20

我正在使用google_images_download库来下载一个关键词的前20张图片。在最近几天我的使用中它工作得很完美。代码如下。

from google_images_download import google_images_download

response = google_images_download.googleimagesdownload()

arguments = {"keywords":keyword,"limit":10,"print_urls":True}
paths = response.download(arguments)

现在它会显示以下错误。


Evaluating...
Starting Download...


Unfortunately all 10 could not be downloaded because some images were not downloadable. 0 is all we got for this search filter!

Errors: 0

我该如何解决这个错误。

4个回答

27

由于谷歌的一些更改(它们如何响应请求),导致了这个问题。在GitHub上,Joeclinton1 对原始repo进行了一些修改,提供了一个临时解决方案。

你可以在这里找到更新后的repo:https://github.com/Joeclinton1/google-images-download.git。如果我没记错的话,解决方案在patch-1分支中。

  1. 首先卸载当前版本的google_images_download。

  2. 然后通过以下方式手动安装Joeclinton1的repo:

git clone https://github.com/Joeclinton1/google-images-download.git
cd google-images-download && sudo python setup.py install #no need for 'sudo' on windows Anaconda environment

或者使用pip来安装它

pip install git+https://github.com/Joeclinton1/google-images-download.git

这应该可以解决问题。请注意,当前的代码库仅支持最多100张图片。


如果你已经安装了google-images-download,你可以使用pip来卸载这个包。 - hiranyajaya
嗨,@HiranyaJayakody,后来我发现我没有使用pip安装早期的repo,只是使用了setup.py。我不知道如何撤销这一步,但在Joeclinton1的repo上安装pip就可以顺利运行了。谢谢。 - Pradeep Singh
1
救命稻草!我以前用的google_images_download已经无法使用了。Pexels下载的都是垃圾图片。这个好使! - Eamonn Kenny

14

我遇到了与google-image-download相同的问题,它之前运行得非常顺利! 我有一个替代方案想要建议,应该可以解决这个问题。

解决方案:不要使用Python中的google-image-download,而是使用bing-image-downloader,从Bing搜索引擎下载。

步骤:

步骤1: 使用以下命令安装库:pip install bing-image-downloader

步骤2:

from bing_image_downloader import downloader
downloader.download(query_string, limit=100,  output_dir='dataset', 
adult_filter_off=True, force_replace=False, timeout=60)

就这样!你需要做的就是将你的图片主题添加到query_string中。

注:

你可以进一步调整的参数:

query_string:要搜索的字符串。

limit:(可选,默认为100)要下载的图像数量。

output_dir:(可选,默认为“dataset”)输出目录的名称。

adult_filter_off:(可选,默认为True)启用或禁用成人过滤器。

force_replace:(可选,默认为False)如果存在文件夹,则删除该文件夹并开始新的下载。

timeout:(可选,默认为60)连接超时时间(以秒为单位)。

更多参考:https://pypi.org/project/bing-image-downloader/


1
是的,这很酷,但请记住,这并不能解决问题:bing-image-downloader经常会错过100%或接近100%的结果。它大多数时间都失败了,而且没有任何指示原因。 - Wolfpack'08
1
感谢@SubhrajeitBhowmick的回答!我试图使用google-images-download下载100多张图片,但由于Google更改了图片格式,我无法再下载它们。bing-image-downloader完美地解决了这个问题! - marsolmos

4

如果您想要下载少于100张图像的查询字符串,google-images-downloadbing-images-downloader更好。它处理错误的能力更强,而且您知道,与Bing相比,Google Images提供了更好的结果。

然而,如果您要下载超过100张图片,google-images-downloader会带来很多麻烦。如这个答案所述,由于谷歌改变了它们的端点,因此这个存储库经常出现失败情况(更多信息请参见这里)。

因此,如果您想要下载数千张图片,请使用bing-image-downloader

从pip安装软件包

pip install bing-image-downloader

运行查询。

注意:文档似乎是不正确的,当作为 from bing_image_downloader import downloader 导入包时会返回一个“找不到模块”的错误(正如这个答案中所提到的)。请按照以下方式导入并使用它:

from bing_image_downloader.downloader import download

query_string = 'muscle cars'

download(query_string, limit=1000,  output_dir='dataset', adult_filter_off=True, force_replace=False, timeout=60, verbose=True)

1
这个答案在2022年6月23日仍然适用,bing_image_downloader可以直接使用,但如果你真的想使用谷歌图片,或许应该尝试他们自己的API。 - Muneeb Ahmad Khurram

2

另一个下载任意数量图像的简单方法:

pip install simple_image_download

从simple_image_download导入simple_image_download as simp

response = simp.simple_image_download response().download(a, b)

其中a=您想要下载的主题字符串,b=您想要下载的图像数量


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接