You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本下载谷歌图片指定关键词的首张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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:14:44