使用google-image-download爬取图像

针对Google图片搜索结果的爬取需求,介绍了一款强大的开源工具google-image-download的使用方法及遇到的问题解决。该工具需通过pip安装,并在Google更改策略后进行代码手动更新以保证下载效果。
部署运行你感兴趣的模型镜像

最近做的一个目标检测模型需要使用大量图像进行训练,最方便的图像获取方式就是通过搜索引擎获取,而Google的搜索结果更适合。
github上有不少开源的Google图像爬取工具,其中star数最多功能最强的就属google-image-download,其安装方式pip安装与编译安装,我为了省事,直接用pip安装

>>> pip3 install google_images_download

安装完成后就可以使用了
有非常多的参数供你使用,具体可以看:https://google-images-download.readthedocs.io/en/latest/arguments.html

但是!!
你会发现不管怎么修改参数,都会报错

Item no.: 1 --> Item name = 2020-02-16 11_28_03
Evaluating...
https://thethaiger.com/wp-content/uploads/2020/01/china-hong-kong-coronavirus.jpg
Starting Download...


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

Errors: 0


Everything downloaded!
Total errors: 0
Total time taken: 3.1959006786346436 Seconds

经过一番搜索,发现是由于Google修改了一些策略,导致链接获取出问题了。有大神修改了代码,但是还没有合并到master,因而就需要我们自己手动修改
首先,找到你的google-image-download文件地址
我的在~/.local/lib/python3.6/site-packages/google_images_download/
用修改后的google_images_download.py,替换原来的google_images_download.py
再进行下载,就没问题了。

当然了,正常下载的前提是需要科学上网,这个我就不细说了

最后不得不吐槽一下数据标注真心累。。。

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

### 使用Python爬虫抓取Google图片的方法及注意事项 #### 方法概述 为了从Google抓取图片,通常会采用Selenium库来模拟浏览器行为并加载页面上的JavaScript内容。由于现代网页大量依赖于动态加载技术,传统的静态HTML解析方法可能无法获取完整的图像链接列表。 #### 安装所需软件包 在开始之前,需安装几个必要的Python库: ```bash pip install selenium requests beautifulsoup4 pillow webdriver_manager ``` #### 设置环境与导入模块 准备阶段涉及配置Webdriver以及引入所需的Python库。 ```python from selenium import webdriver from selenium.webdriver.common.by import By import time import os import requests from PIL import Image from io import BytesIO from webdriver_manager.chrome import ChromeDriverManager ``` #### 初始化WebDriver实例 创建Chrome WebDriver对象以便后续操作自动化浏览过程。 ```python browser = webdriver.Chrome(ChromeDriverManager().install()) search_url = "https://www.google.com/search?q={q}&tbm=isch" browser.get(search_url.format(q='example')) time.sleep(1) # 等待页面完全加载 ``` #### 获取图片URLs 通过XPath定位器找到所有的缩略图元素,并提取其`src`属性作为原始大小的图片链接。 ```python thumbnail_results = browser.find_elements(By.CSS_SELECTOR, "img.Q4LuWd") image_urls = [] for img in thumbnail_results[:5]: # 只处理前五张图片为例 try: img.click() time.sleep(0.5) actual_images = browser.find_elements(By.CSS_SELECTOR,'img.n3VNCb') for actual_image in actual_images: if actual_image.get_attribute('src') and 'http' in actual_image.get_attribute('src'): image_urls.append(actual_image.get_attribute('src')) break except Exception as e: print(f"Could not retrieve image {e}") ``` #### 下载并保存图片文件 遍历收集到的URL列表下载每一张图片至本地磁盘中指定位置。 ```python def persist_image(folder_path:str,url:str): try: image_content = requests.get(url).content except Exception as e: print(f"ERROR - Could not download {url} - {e}") try: image_file = BytesIO(image_content) image = Image.open(image_file).convert('RGB') file_path = os.path.join(folder_path,hashlib.sha1(image_content).hexdigest()[:10] + '.jpg') with open(file_path, 'wb') as f: image.save(f,"JPEG", quality=85) print(f"SUCCESS - saved {url} - as {file_path}") except Exception as e: print(f"ERROR - Could not save {url} - {e}") for url in set(image_urls): # 去重后再执行存储动作 persist_image('./images', url) ``` #### 注意事项 - **合法性审查**:确保所使用的API接口和服务条款允许此类数据采集活动;对于受版权保护的内容尤其要谨慎行事[^1]。 - **频率控制**:频繁请求可能导致IP被封禁或触发验证码机制,建议合理安排访问间隔时间以降低风险。 - **反爬策略应对**:面对复杂的反爬措施(如CAPTCHA),考虑借助第三方服务提供商的帮助或是调整算法逻辑绕过检测。 - **隐私政策遵循**:尊重个人资料保密原则,在未经同意的情况下不得擅自搜集敏感信息。
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值