Python 批量下载带标签的谷歌图片

Python 批量下载带标签的谷歌图片,python,image,batch-processing,google-custom-search,google-image-search,Python,Image,Batch Processing,Google Custom Search,Google Image Search,我正试图找到一种高效且可复制的方法,从谷歌图像搜索中批量下载完整大小的图像文件。其他人也问过类似的问题,但我没有发现任何与我想要的或我理解的东西 大多数指的是贬值的谷歌图像搜索API或谷歌自定义搜索API,它似乎不适用于整个网络,或者只是从一个URL下载图像 我想这可能是一个两步的过程:首先,从搜索中提取所有图像URL,然后从这些URL批量下载 我应该补充一点,我是一个初学者(这可能是显而易见的;对不起)。因此,如果有人能解释并为我指出正确的方向,我将不胜感激 我也研究过免费软件的选择,但这些似

我正试图找到一种高效且可复制的方法,从谷歌图像搜索中批量下载完整大小的图像文件。其他人也问过类似的问题,但我没有发现任何与我想要的或我理解的东西

大多数指的是贬值的谷歌图像搜索API或谷歌自定义搜索API,它似乎不适用于整个网络,或者只是从一个URL下载图像

我想这可能是一个两步的过程:首先,从搜索中提取所有图像URL,然后从这些URL批量下载

我应该补充一点,我是一个初学者(这可能是显而易见的;对不起)。因此,如果有人能解释并为我指出正确的方向,我将不胜感激

我也研究过免费软件的选择,但这些似乎也有点参差不齐。除非有人知道可靠的

如果有人知道这些标签的任何信息,以及它们是否存在于某个地方/与图像相关

导入json
导入操作系统
导入时间
导入请求
从PIL导入图像
从StringIO导入StringIO
从requests.exceptions导入ConnectionError
def go(查询,路径):
“”“从谷歌图像搜索下载全尺寸图像。
未经允许,请勿打印或重新发布图像。
我用它来训练学习算法。
"""
基本URL=https://ajax.googleapis.com/ajax/services/search/images?'\
“v=1.0&q=”+query+”&start=%d”
BASE_PATH=os.PATH.join(路径,查询)
如果操作系统路径不存在(基本路径):
os.makedirs(基本路径)
start=0#用于分页的Google的start查询字符串参数。
当start<60时:#谷歌最多只能返回56个结果。
r=请求.get(基本URL%开始)
对于json.loads(r.text)['responseData']['results']中的图像信息:
url=image\u info['unescapedUrl']
尝试:
image\u r=requests.get(url)
除连接错误外,e:
“打印”无法下载%s“%url”
持续
#从名称中删除文件系统路径字符。
title=image\u info['titlenoformating'].替换('/','').替换('\\','')
file=open(os.path.join(基本路径,'%s.jpg')%title,'w'))
尝试:
Image.open(StringIO(Image\r.content)).save(文件“JPEG”)
除IOError外,e:
#扔掉一些礼物…布莱。
“打印”无法保存%s“%url”
持续
最后:
file.close()文件
打印开始
开始+=每页4#4张图像。
#善待谷歌,他们也会善待谷歌:)
时间。睡眠(1.5)
#示例使用
go('横向','我的目录')
更新
我能够使用指定的完整web创建自定义搜索,并成功执行以获取图像链接,但正如前一篇文章中提到的,它们与正常的Google图像结果并不完全一致

尝试使用ImageSoup模块。要安装它,只需执行以下操作:

pip install imagesoup
示例代码:

>>> from imagesoup import ImageSoup
>>>
>>> soup = ImageSoup()
>>> images_wanted = 50
>>> query = 'landscape'
>>> images = soup.search(query, n_images=50)
现在你有了一个包含50幅来自谷歌图片的风景图片的列表。让我们玩第一个:

>>> im = images[0]
>>> im.URL
https://static.pexels.com/photos/279315/pexels-photo-279315.jpeg
>>> im.size
(2600, 1300)
>>> im.mode
RGB
>>> im.dpi
(300, 300)
>>> im.color_count
493230
>>> # Let's check the main 4 colors in the image. We use
>>> # reduce_size = True to speed up the process.
>>> im.main_color(reduce_size=True, n=4))
[('black', 0.2244), ('darkslategrey', 0.1057), ('darkolivegreen', 0.0761), ('dodgerblue', 0.0531)]
# Let's take a look on our image
>>> im.show()

每次搜索返回的图像数可能会更改。通常是一个小于900的数字。如果要获取所有图像,请将n_images设置为1000


要贡献或报告bug,请查看github repo:

这似乎是一个与python相关的问题,而不是批处理文件。我会帮你更新标签,但我建议你在标签的信息页面上阅读。谢谢@DennisvanGilsIf如果你想知道你自己的应用程序的搜索结果与常规谷歌图像搜索结果不同的原因,那是因为谷歌会根据你的cookies等更改搜索结果,而你的应用程序没有have@DennisvanGils更多的是更新的旁注。但是谢谢,我想是这样的。如前所述,我需要做的主要事情是能够高效地从每个图像链接下载图像,如果可能的话,还需要使用相关的alt标记。不确定您是否仍在尝试这样做。然而,谷歌不仅会关心你的cookies,还会关心你的用户代理字符串。刮掉谷歌也不是微不足道的,因为他们认为这违反了他们的条款和条件,如果他们捡到刮擦,就会很快地阻止你。你能更正你的密码吗?它根本不起作用。谢谢
>>> im = images[0]
>>> im.URL
https://static.pexels.com/photos/279315/pexels-photo-279315.jpeg
>>> im.size
(2600, 1300)
>>> im.mode
RGB
>>> im.dpi
(300, 300)
>>> im.color_count
493230
>>> # Let's check the main 4 colors in the image. We use
>>> # reduce_size = True to speed up the process.
>>> im.main_color(reduce_size=True, n=4))
[('black', 0.2244), ('darkslategrey', 0.1057), ('darkolivegreen', 0.0761), ('dodgerblue', 0.0531)]
# Let's take a look on our image
>>> im.show()
>>> # Nice image! Let's save it.
>>> im.to_file('landscape.jpg')