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

如何修改现有Python代码实现从谷歌图片批量爬取1000张图片

问题修复方案

核心报错原因

  • 你的fetch_image_urls函数中,for循环遍历缩略图的else分支里有一行无返回值的return,且位置在加载更多按钮逻辑之前,导致首次遍历完当前页所有缩略图后直接退出函数返回None,同时点击加载更多的代码完全无法执行,这就是你触发NoneType不可迭代报错、也无法爬取超过200张图片的直接原因。
  • 额外的冗余操作:调用fetch_image_urls前你额外访问谷歌首页输入关键词搜索的操作是多余的,函数内部已经构造了专用的图片搜索URL,重复操作可能导致页面状态异常。

需修改的代码片段

1. 修复fetch_image_urls函数的else分支逻辑

将原函数中for循环对应的else块替换为如下代码:

else:
            print("Found:", len(image_urls), "image links, looking for more ...")
            time.sleep(3) # 等待页面加载完成,无需等待30秒
            # 删除原有的多余return语句
            try:
                load_more_button = wd.find_element_by_css_selector(".mye4qd")
                if load_more_button and load_more_button.is_displayed():
                    wd.execute_script("document.querySelector('.mye4qd').click();")
                    time.sleep(2) # 点击加载更多后等待新内容加载
            except Exception:
                print(f"无更多搜索结果,当前关键词共收集到{len(image_urls)}张图片链接")
                break # 没有更多内容时退出循环

原有逻辑已支持无论是否爬满目标数量都返回已收集的image_urls集合,仅删除多余return即可。

2. 优化调用逻辑,删除冗余操作+增加反爬配置

修改调用部分的代码如下:

op = webdriver.ChromeOptions()
op.add_argument('headless')
# 增加UA伪装,避免被谷歌识别为爬虫限制返回结果数量
op.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')
wd = webdriver.Chrome(options=op, executable_path=DRIVER_PATH)
queries = tags 
images_path = 'scraped_photos_test'
# 提前创建根目录避免重复判断
if not os.path.exists(images_path):
    os.mkdir(images_path)
for query in queries:
    # 删除冗余的谷歌首页搜索操作,直接调用爬取函数
    links = fetch_image_urls(query,1000,wd)
    # 增加非空判断避免报错
    if not links:
        print(f"关键词{query}未爬取到任何图片,跳过")
        continue
    for i in links:
        persist_image(images_path,query,i)
wd.quit()

额外注意事项

  • 谷歌图片单个关键词的搜索结果上限通常为400~800张,若需爬满1000张,可拆分多个语义相近的关键词分别爬取后合并结果。
  • 可适当调大sleep_between_interactions参数,避免操作频率过高被谷歌临时限制访问。

内容的提问来源于stack exchange,提问作者Ravish Jha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:45:03