用途
google-image-crawler 是一个基于 Playwright 的 Google 图片爬虫 Skill,主要用于自动化搜索 Google 图片、提取原始高清图片 URL,并进行批量下载。整个流程无需手动操作浏览器。
主要能力
- 使用 Playwright 自动化 Google 图片搜索,无需手动操作浏览器。
- 智能提取原始高清图片 URL,原理是解析搜索结果 /imgres 链接中的 imgurl 参数。
- 支持批量下载图片,并提供并发控制。
- 提供独立的下载模块 ImageDownloader,支持线程池并发和进度显示。
- 提供命令行工具 cli.py,可从文件或单个 URL 下载图片。
安装
pip install playwright aiohttp requests tqdm
playwright install chromium
使用方式
基础异步用法:
import asyncio
from crawler import GoogleImageCrawler
async def main():
async with GoogleImageCrawler() as crawler:
results = await crawler.search("cute cats", num_images=10)
for result in results:
print(f"URL: {result.url}")
print(f"Size: {result.width}x{result.height}")
downloaded = await crawler.download_images(
results,
output_dir="./downloads"
)
asyncio.run(main())
同步快捷调用:
from crawler import search_images_sync
results = search_images_sync("mountain landscape", num_images=5)
for r in results:
print(r.url)
搜索方法参数包括 keyword、num_images、safe_search、min_width、min_height。下载方法参数包括 results、output_dir、concurrency。
独立下载模块:
from downloader import ImageDownloader
downloader = ImageDownloader(
output_dir="./downloads",
concurrent=5,
max_retries=3
)
results = downloader.download_batch(urls)
命令行工具示例:
python cli.py -f urls.txt -o ./images
python cli.py -f urls.txt -c 10 -t 60 -o ./images
python cli.py -u "https://example.com/image.jpg" -o ./images
资料还给出了带尺寸过滤的高清壁纸搜索、搜索并下载、组合使用爬虫与下载器等示例。
关键对象与参数
ImageResult 属性包括:url(原始高清图片 URL)、thumbnail_url(缩略图 URL)、title(图片标题)、source_url(来源网页 URL)、width(图片宽度)、height(图片高度)。
GoogleImageCrawler 初始化参数包括:headless(默认 True)、timeout(默认 30)、scroll_pause(默认 1.5)、max_retries(默认 3)、proxy(默认 None)。
ImageDownloader 初始化参数包括:output_dir(默认 "./downloads")、timeout(默认 30)、max_retries(默认 3)、concurrent(默认 5)、headers(默认 None)。
CLI 参数包括:--file/-f、--url/-u、--output/-o、--concurrent/-c、--timeout/-t、--retries/-r、--limit/-l、--proxy。
技术细节
原图 URL 提取原理:Google 图片搜索结果中每个图片包含一个 /imgres 链接,形如 /imgres?imgurl=https://example.com/original.jpg&imgrefurl=...,爬虫通过解析 imgurl 参数获取原图地址。
反爬策略包括:使用正常用户 User-Agent、设置合理视口大小(1920x1080)、自动处理 Cookie 同意弹窗、滚动间隔模拟人工操作(1.5 秒)、指数退避重试机制。
文件结构:
google-image-crawler/
├── crawler.py # 爬虫核心模块 (Playwright + 异步)
├── downloader.py # 图片下载模块 (Requests + 线程池)
├── config.py # 配置管理
├── cli.py # 命令行工具
├── example.py # 使用示例
└── docs/ # 文档
├── architecture.md # 架构设计
├── api-reference.md # API 参考
└── examples.md # 更多示例
依赖包括:playwright(浏览器自动化)、aiohttp(异步 HTTP 客户端)、requests(同步 HTTP 请求)、tqdm(进度条显示)。
适用场景
- 需要按关键词批量收集图片原始高清 URL 的任务。
- 需要按最小宽高筛选高清图片(如壁纸类素材)的场景。
- 需要通过命令行或 Python API 批量下载一组图片 URL 的场景。
限制与注意事项
资料中给出的注意事项包括:遵守 Google 服务条款和目标网站的 robots.txt;控制频率,避免过于频繁的请求,建议设置合理的 scroll_pause;商业使用请确认图片版权;大量爬取时建议使用代理避免 IP 限制;使用 async with 上下文管理器确保浏览器正确关闭。
常见错误及处理:浏览器初始化失败时确保已执行 playwright install chromium;搜索超时或页面加载失败时可增加超时时间或使用代理;图片下载失败时可增加重试次数或使用独立下载模块;IP 被限制时可使用代理并增加滚动间隔。
License:MIT。
除上述内容外,工具的收费、价格、平台支持范围等事实暂未提供。