如何编写脚本下载谷歌图片指定关键词的首张PNG图片
嘿,这个需求超有意思!每次锁屏都换一张随机PNG当背景,新鲜感拉满~我来给你拆解实现步骤,Python确实是更靠谱的选择——直接用wget的话,谷歌图片的动态渲染和反爬机制会让你很难拿到真实的原图链接,折腾起来反而麻烦。下面重点说Python方案:
一、Python实现核心脚本
这个脚本会接收你传入的关键词,自动搜索谷歌图片里的首张PNG并下载,还能顺便帮你设置成锁屏背景。
1. 先搞定依赖和环境
- 安装Python的两个关键库:
pip install selenium requests - 下载对应浏览器的WebDriver(比如Chrome的ChromeDriver),要和你的浏览器版本完全匹配,然后把它放到系统PATH里,或者和脚本放在同一个文件夹里。
2. 完整脚本代码
import sys import requests import urllib.parse from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time import os def download_first_png(keyword, save_path="lockscreen.png"): # 对关键词做URL编码,支持中文搜索 encoded_keyword = urllib.parse.quote(keyword) # 构造带PNG筛选的谷歌图片搜索URL search_url = f"https://www.google.com/search?q={encoded_keyword}&tbm=isch&filetype=png" # 初始化Chrome浏览器驱动(用其他浏览器的话改对应Driver,比如FirefoxDriver) driver = webdriver.Chrome() driver.get(search_url) try: # 等待第一张缩略图加载完成并点击(谷歌图片的缩略图不是原图,必须点进去拿真实链接) first_thumbnail = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "img.rg_i.Q4LuWd")) ) first_thumbnail.click() # 给原图加载留一点时间,再定位原图元素 time.sleep(2) original_img = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "img.n3VNCb")) ) img_url = original_img.get_attribute("src") # 下载图片到本地 response = requests.get(img_url) with open(save_path, "wb") as f: f.write(response.content) print(f"✅ 图片已保存到: {save_path}") # 根据你的系统,自动设置锁屏/桌面背景(把下面对应系统的注释去掉) # --- Windows系统 --- os.system('rundll32.exe user32.dll,UpdatePerUserSystemParameters 1, True') # --- macOS系统 --- # os.system('osascript -e \'tell application "System Events" to set picture of every desktop to POSIX file "{}"\''.format(save_path)) # --- Linux GNOME桌面 --- # os.system('gsettings set org.gnome.desktop.background picture-uri file://{}'.format(os.path.abspath(save_path))) except Exception as e: print(f"❌ 出错了: {str(e)}") finally: # 不管成功失败,都关闭浏览器 driver.quit() if __name__ == "__main__": # 检查是否传入了关键词参数 if len(sys.argv) < 2: print("⚠️ 请传入搜索关键词!用法: python your_script.py [关键词]") sys.exit(1) # 获取命令行传入的关键词 keyword = sys.argv[1] download_first_png(keyword)
3. 关键注意事项
- WebDriver版本匹配:一定要下载和你浏览器版本一致的Driver,不然会直接报错,ChromeDriver可以从Chrome官方的测试页面下载。
- 反爬应对:如果频繁搜索触发了谷歌的人机验证,可以在脚本里加一点随机延迟(比如
time.sleep(random.randint(2,5))),或者偶尔手动处理一次验证。 - 中文关键词:脚本里已经用
urllib.parse.quote做了编码,直接传中文关键词也没问题。
二、结合快捷键实现“锁屏即换背景”
要实现按快捷键就自动下载随机图片+锁屏,你可以根据系统写个小脚本,再绑定快捷键:
Windows系统示例(批处理脚本)
新建一个lockscreen_with_random_bg.bat文件,内容如下:
@echo off :: 定义一批随机关键词,每次锁屏随机选一个 set "keywords=可爱猫咪 雪山日落 深海珊瑚 星空银河 复古插画" :: 把关键词拆成数组,随机选一个 setlocal enabledelayedexpansion set "count=0" for %%k in (%keywords%) do ( set "kw[!count!]=%%k" set /a count+=1 ) set /a rand=%random% %%count set "random_kw=!kw[%rand%]!" :: 调用Python脚本下载图片(替换成你的脚本路径) python "C:\path\to\your\script.py" "%random_kw%" :: 锁屏 rundll32.exe user32.dll,LockWorkStation
然后右键这个批处理,创建快捷方式,给快捷方式设置一个快捷键(比如Ctrl+Alt+L),以后按这个键就会自动换背景+锁屏了。
macOS/Linux系统
- macOS可以用Automator创建一个“快速操作”,执行Shell脚本,把上面的Python调用和锁屏命令(
pmset displaysleepnow)写进去,再绑定快捷键。 - Linux(比如GNOME)可以在系统设置的“键盘快捷键”里添加自定义快捷键,执行对应的Shell脚本,脚本内容类似Windows的逻辑:随机选关键词→调用Python脚本→锁屏。
三、为什么不推荐wget?
谷歌图片的搜索结果是动态渲染的,直接用wget下载网页只能拿到缩略图的低分辨率链接,而且谷歌会识别wget的请求头,直接返回403或者验证页面,就算加了请求头模拟浏览器,后续解析原图链接也非常麻烦,稳定性极差,不如Python的selenium方案省心。
内容的提问来源于stack exchange,提问作者Rémi Bisson
相关产品推荐
相关产品推荐

