手动一张张右键保存了三年背景图,换成API加命令行批量拉取后,200张图从三个下午变成一杯咖啡的时间
网站背景图这件事,说白了就是一个字:烦。一个站还好说,打开Unsplash搜一搜,挑几张合适的,右键保存,上传到服务器,搞定。但手里一旦超过三个站,这活就变成噩梦了。每个站首页banner要一张、内页头图要一张、分类页背景要一张,十个站就是三十张图。一张张搜、一张张比、一张张存,半天就没了。更尴尬的是,花一下午挑的图上传后发现和网站整体色调不搭,又要重来一轮。
这个问题其实有标准解法。网站背景图的来源就三类:免费图库API批量拉取、CSS/SVG背景生成器自动生成、爬虫批量抓取壁纸站。三种方式各有适用场景,组合起来用,配图的效率能提升一个数量级。
| 手动搜索+右键保存 | 约 8-12 小时 |
| 图库网站逐个下载 | 约 3-5 小时 |
| API批量拉取(Unsplash/Pexels) | 约 15-30 分钟 |
| CSS/SVG生成器自动生成 | 约 5-10 分钟 |
一、做网站背景图,真正需要的是哪几类图
先把需求拆开看。一个典型的网站,背景图的使用场景大概分这几类:
看这个表就能发现,真正需要"照片级大图"的场景只有首页Hero区和内容头图,其余大部分场景其实用CSS或SVG就能搞定。而这两类需求,都有成熟的批量获取方案。
二、免费图库API:一条命令拉下200张高清背景图
目前市面上能稳定提供免费商用图片API的,主要是三家:Unsplash、Pexels、Pixabay。三家的API都免费注册即可使用,但额度、图片风格、调用限制差异不小。
✓ 图片量:400万+
✓ 风格:艺术摄影为主
△ 中文搜索:较弱
✓ 无需署名
✓ 图片量:320万+
✓ 风格:偏商业/生活
✓ 中文搜索:中等
✓ 无需署名
✓ 图片量:280万+
△ 风格:质量参差不齐
✓ 中文搜索:较好
✓ 无需署名
Pexels的200次/小时限额对批量拉取最友好,Unsplash的图片审美质量最高但限额最紧,Pixabay胜在中文搜索和矢量图资源。实操上建议三家API都注册,根据关键词在三家之间切换拉取。
Python批量拉取Unsplash背景图(可直接用)
注册Unsplash开发者账号,创建一个应用拿到Access Key,然后跑下面这个脚本。安装依赖只需要 pip install requests:

# 安装依赖:pip install requestsimport requestsimport osimport timeACCESS_KEY = "你的Unsplash_Access_Key"SAVE_DIR = "./backgrounds"KEYWORDS = ["technology", "nature", "business", "abstract", "city"]PER_KEYWORD = 40 # 每个关键词拉40张,总共200张os.makedirs(SAVE_DIR, exist_ok=True)for kw in KEYWORDS:page = 1count = 0while count < PER_KEYWORD:url = f"https://api.unsplash.com/search/photos?query={kw}&page={page}&per_page=30&client_id={ACCESS_KEY}"r = requests.get(url).json()if "results" not in r:breakfor img in r["results"]:img_url = img["urls"]["regular"]img_data = requests.get(img_url).contentfilename = f"{kw}_{count+1:03d}.jpg"with open(os.path.join(SAVE_DIR, filename), "wb") as f:f.write(img_data)count += 1if count >= PER_KEYWORD:breakpage += 1time.sleep(1.5) # 控制频率,避免触发限速print(f"✓ {kw}: 已下载 {count} 张")
这个脚本跑完,在 ./backgrounds 目录下得到200张按关键词分类的高清背景图,整个过程大约5-8分钟。Pexels的调用方式几乎一样,只需要把API地址换成 api.pexels.com/v1/search,把认证方式从 client_id 参数换成 Authorization 请求头。
⚠ 三个API容易翻车的地方
- Unsplash的50次/小时是"请求次数"不是"图片张数"。一次搜索请求返回30张结果,所以理论上每小时能拉1500张图。但连续高频调用会被临时封IP,sleep 1.5秒是比较安全的间隔。
- Pexels默认返回的是压缩图。API返回的 src.original 字段才是原图,src.large2x 是放大后的压缩版。做网站Hero背景要用原图。
- Pixabay的API不允许"系统性批量下载"。官方文档明确写了 Systematic mass downloads are not permitted。做素材库可以,做图库镜像站会被封号。
三、CSS和SVG背景生成器:0张图片也能做出好看的背景
API拉回来的摄影图适合做Hero区、头图这些"需要真实感"的位置。但卡片背景、区块底色、全站纹理这些位置,用CSS渐变或SVG图案反而更好——零加载体积、任意分辨率都清晰、完全不用担心版权。
这五个工具的共同优势:不需要下载图片文件,只需要把生成的CSS或SVG代码直接粘贴到网站样式里。对多个网站来说,换色不换型——同一个图案模板,改个主色调就能适配不同站点的视觉风格。再配合SVG生成器做一个通用纹理叠加层(半透明的网格或点阵),每个站的视觉差异度能拉到80%以上。
四、爬虫批量抓取壁纸站:当API不够用时的备选方案
API有限额,图库站有内容偏好。有些站长需要的特定风格图片——比如中国风、日系、赛博朋克——免费图库API里的选择就不够多。这时候可以自己写爬虫去壁纸站批量抓取。
爬虫方案适用的三类目标站
- Wallhaven / Wallhere:标签分类完善,图片质量高,适合找特定风格的高清壁纸做背景
- 花瓣网 / 站酷:国内设计师上传的素材,中文搜索友好,中国风、电商风素材丰富
- Freepik / Vecteezy:矢量图和插画多,适合做图标背景和装饰元素
爬虫方案的关键不是爬的技术(requests + BeautifulSoup能搞定90%的静态页面),而是三个容易被忽略的环节:

第一,User-Agent和请求间隔。大部分壁纸站不会做太严格的反爬,但连续高频请求会被临时封IP。每张图下载间隔2-3秒,每30张暂停10秒,基本不会触发风控。
第二,文件名规范化。下载完一锅乱码的文件名,后续根本没法用。在爬虫里就把文件名统一为"关键词_分辨率_序号"的格式,比如 cyberpunk_1920x1080_001.jpg,后续按文件夹分类管理。
第三,版权检查。壁纸站的图片授权千差万别。Wallhaven每张图都标注了授权类型(CC0、CC BY等),爬之前先过滤授权字段。花瓣和站酷的图大部分有版权,只能做灵感参考不能直接商用。
爬虫方案的适用边界
爬虫抓壁纸站适合"我需要特定风格的图片但API里找不到"的场景。如果只是需要通用的科技感、自然风光、商务场景背景图,API方案已经完全够用了,完全不需要上爬虫。爬虫方案是补API方案的缺口,不是替代。
五、三套方案怎么组合:按站点数量和类型选
上面介绍了三种获取背景图的方式,实际用的时候不需要三选一,而是按场景组合。以下是三个典型场景的推荐搭配:
10个站以下,Pexels API + CSS渐变预设库这个组合基本覆盖所有背景图需求。站群规模上去之后,SVG生成器是性价比最高的方案——不需要担心API限额、不需要担心版权、生成速度最快。

六、四个容易被忽略的效率细节
① 建一个本地素材库,不要每次都重新拉
第一次花半小时用API拉500张图下来,按关键词分文件夹存好(technology、nature、business、abstract、minimal、dark等)。以后每次配图直接从本地库里挑,比每次调API快100倍。定期一个月补一次新图就行。
② 图片命名要有规则,不然后面找图比找针还难
拉下来的图片默认文件名是一串随机hash,完全没法管理。在下载脚本里就把文件名规范为"风格_主色调_序号"的格式,比如 dark_blue_001.jpg。找图的时候直接按文件夹名定位,效率差10倍以上。
③ API拉回来的原图太大,用之前批量压缩
Unsplash regular尺寸的图片一张2-5MB,直接放网站上会拖慢加载速度。用TinyPNG的API或Python的Pillow库批量压缩到500KB以下,网页加载速度能快3-4倍。这个步骤可以在下载脚本里直接加上。
④ 生成器的代码片段统一管理,不要每次重新生成
把常用的20条CSS渐变、10个SVG纹理、5套配色方案存成一个CSS文件。每个新站直接引用这个文件,只需要改一行主色调变量,所有背景自动适配。比每个站重新调一次生成器快太多。
说到底,背景图批量获取这件事的核心不是"找到多少张图",而是"用最短的时间让每个站看起来都不一样"。三套方案里,API解决的是"有没有图"的问题,CSS/SVG生成器解决的是"差异化"的问题,爬虫解决的是"特殊需求"的问题。把本地素材库建起来,把生成器预设整理好,之后每个站配背景图的时间不会超过三分钟。
